2016-04-28 19 views
1

Ich hatte ein Projekt mit Log-Anwendung. Ich habe es entfernt und habe einen Registrierungsantrag gemacht, um die Datenbank zu integrieren. Wenn Sie nicht angemeldet sind, können Sie sich nicht anmelden ..... Aber wenn ich mein Django-Projekt betreibe, werde ich nicht mehr registriert. Ich erhalte einen Attributfehler in der Reg-Anwendung, aber ich wusste nicht, wie ich ihn lösen soll.attributeerror: 'Modul' Objekt hat kein Attribut 'register_success'

reg/urls.py

from django.conf.urls import url 

from . import views 

urlpatterns = [ 
    url(r'^$', views.login, name='login'), 
    url(r'^$', views.auth_view, name='auth_view'), 
    url(r'^$', views.loggedin, name='loggedin'), 
    url(r'^$', views.invalid_login, name='invalid_login'), 
    url(r'^$', views.register_user, name='register_user'), 
    url(r'^$', views.logout, name='logout'), 
    url(r'^$', views.register_success, name='register_success'), 

] 

reg/views.py

from django.shortcuts import render 
from django.shortcuts import render_to_response 
from django.http import HttpResponseRedirect 
from django.contrib import auth 
from django.core.context_processors import csrf 
def login(request): 
    c = {} 
    c.update(csrf(request)) 
    return render_to_response('login.html', c) 

def auth_view(request): 
    username = request.POST.get('username', '') 
    password = request.POST.get('password', '') 
    user = auth.authenticated(username=username, password=password) 

    if user is not None: 
     auth.login(request, user) 
     return HttpResponseRedirect('loggedin') 
    else: 
     return HttpResponseRedirect('invalid') 

def loggedin(request): 
    return render_to_response('loggedin.html', 
          {'full_name': request.user.username}) 
def invalid_login(request): 
    return render_to_response('invalid_login.html') 
def logout(request): 
    auth.logout(request) 
    return render_to_response('logout.html') 
def register_user(request): 
    if request.method == 'POST': 
     form = UserCreationForm(request.POST) 
     if form.is_valid(): 
      form.save() 
      return HttpResponseRedirect('register_success') 


    args = {} 
    args.update(csrf(request)) 

    args['form'] = UserCreationForm() 

    return render_to_response('register.html', args) 
def register_success(request): 
    return render_to_response('register_success.html') 

site/urls.py

from django.conf.urls import include, url 
from django.contrib import admin 
from django.contrib.auth import views as auth_views 
from django.contrib.auth import views 
from log.forms import LoginForm 

urlpatterns = [ 
url(r'^admin/', admin.site.urls),  
url(r'^aps/', include('aps.urls')), 
url(r'^mail/', include('mail.urls')), 
url(r'^reg/', include('reg.urls')), 
url(r'^reg/register_success/$', views.register_success), 
url(r'^reg/register/$', views.register_user), 
url(r'^reg/invalid/$', views.invalid_login), 
url(r'^reg/loggedin/$', views.loggedin), 
url(r'reg/login/$', views.login), 
url(r'reg/logout/$', views.logout), 
url(r'reg/auth/$', views.auth_view), 


] 

Antwort

1

Sie brauchen nicht alle URLs hinzufügen unter reg/urls.py einzeln in site/urls.py als url(r'^reg/', include('reg.urls')) macht das schon automatisch für Sie. Hier

ist die korrigierte Version von urlpatterns definiert in sites/urls.py:

from django.conf.urls import patterns 

urlpatterns = patterns(
    "", 
    (r'^admin/', admin.site.urls),  
    (r'^aps/', include('aps.urls'), 
    (r'^mail/', include('mail.urls'), 
    (r'^reg/', include('reg.urls'), 
) 

und reg/urls.py:

from django.conf.urls import patterns 

urlpatterns = patterns(
    "", 
    url(r'^login/$', views.login, name='login'), 
    url(r'^auth/$', views.auth_view, name='auth_view'), 
    url(r'^loggedin/$', views.loggedin, name='loggedin'), 
    url(r'^invalid/$', views.invalid_login, name='invalid_login'), 
    url(r'^register/$', views.register_user, name='register_user'), 
    url(r'^logout/$', views.logout, name='logout'), 
    url(r'^register_success/$', views.register_success, name='register_success'), 
) 
+0

Vielen Dank es das Problem gelöst :) – bne

1

in Ihrer Website/urls.py:

from django.contrib.auth import views as auth_views 
from django.contrib.auth import views 

Wenn Dein Kabeljau e versucht, auf views.register_success zuzugreifen Sie versuchen, auf register_success innerhalb django.contrib.auth zuzugreifen, daher der Fehler.

Sie erhalten den gleichen Fehler, wenn der Code versucht, auf die anderen Ansichten zuzugreifen: Er sucht einfach am falschen Ort!

korrigieren Sie einfach den Import:

from reg import views 

EDIT: Auch wenn es nicht die Ursache für Ihr aktuelles Problem, ozgur Antwort gibt bessere Praktiken nicht erklären, die Sie wirklich es betrachten sollten und folgen Sein Rat.

+0

@ozgur Mein schlecht, du hast Recht. Da Sie den falschen Import nicht erwähnt haben, habe ich nicht überprüft, ob die Ansicht immer noch von der falschen Stelle aufgerufen wurde. – vmonteco

+0

Irgendwie vielen Dank für Ihre Hilfe :) – bne

Verwandte Themen