我有一个带日志应用程序的项目。我删除了它并完成了注册申请以整合数据库,如果你没有注册,你就无法登录.....但当我运行服务器我的Django项目。我在reg应用程序中获得了属性错误,但我不知道如何解决它。
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),
]
答案 0 :(得分:1)
您不需要将reg/urls.py
下的所有网址单独添加到site/urls.py
,因为url(r'^reg/', include('reg.urls'))
已经为您自动执行此操作。
以下是urlpatterns
中定义的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'),
)
和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'),
)
答案 1 :(得分:1)
/ urls.py:
from django.contrib.auth import views as auth_views
from django.contrib.auth import views
当您的代码尝试访问views.register_success
时,您试图访问register_success
内的django.contrib.auth
,从而导致错误。
当代码尝试访问其他视图时,您会收到同样的错误:它只是在错误的地方搜索!
只需更正导入:
from reg import views
编辑:即使它没有解释您当前问题的原因,但是ozgur的答案提供了更好的实践,您应该真正看一下并遵循他的建议。