Python django URL不是';t定义

Python django URL不是';t定义,python,django,url,Python,Django,Url,我遇到了一个问题,不存在的URL能够显示。例如,我在/myapp/login上找到一个url,它就工作了。然后我转到/myapp/login/login,它仍然可以工作。然后我转到/myapp/insertrandomcharactershere/login,它仍然可以工作。这将适用于/myapp/so/myapp/register、/myapp/login和/myapp/myaccount子路径中的每个url。看起来,只要它在我的urlconf中以一个名字结尾,它就会工作。我一直无法解决这个问

我遇到了一个问题,不存在的URL能够显示。例如,我在/myapp/login上找到一个url,它就工作了。然后我转到/myapp/login/login,它仍然可以工作。然后我转到/myapp/insertrandomcharactershere/login,它仍然可以工作。这将适用于/myapp/so/myapp/register、/myapp/login和/myapp/myaccount子路径中的每个url。看起来,只要它在我的urlconf中以一个名字结尾,它就会工作。我一直无法解决这个问题,所以我从我的登录页面和我的URLConf中添加了一些代码,希望这些代码能够包含这个问题

我应该在任何不是/myapp/、/myapp/login/、/myapp/register/、/myapp/myaccount的东西上使用404/

#django/url.py
urlpatterns=模式(“”,
url(r'myapp/',包括('myapp.url'),
url(r“^admin/”,包括(admin.site.url)),
)
#myapp/url.py
urlpatterns=patterns('myapp.views',
url(r'^$'、'index',name='index'),
url(r'register/$,'register',name='register'),
url(r'myaccount/$,'myaccount',name='myaccount'),
url(r'login/$,'login_page',name='login'),
url(r'logout/$,'logout\u user',name='logout')
)
#myapp/login.py
def登录页面(请求):
if request.user.is_经过身份验证():
返回HttpResponseRedirect(反向('index'))
form=LoginForm(request.POST或None)
如果form.is_有效():
username=form.cleaned_数据['username']
username=username.capitalize()
password=表单。已清除的_数据['password']
尝试:
User.objects.get(用户名=用户名)
除:
返回呈现(请求'myapp/login.html'{
“形式”:形式,
“错误”:“帐户不存在”
})
用户=验证(用户名=用户名,密码=密码)
如果用户不是无:
如果user.u处于活动状态:
登录(请求、用户)
返回HttpResponseRedirect(反向('index'))
其他:
返回呈现(请求'myapp/login.html'{
“形式”:形式,
'错误':'帐户被禁用或禁止',
})
其他:
返回呈现(请求'myapp/login.html'{
“形式”:形式,
“表单”:“身份验证错误!”
})
返回呈现(请求'myapp/login.html'{
“形式”:形式,
})
{%如果不是user.is_身份验证%}
#myapp/templates/myapp/login.html
登录
{%csrf_令牌%}
{{form.as_p}}
{{error}}
{%endif%}

我认为URL缺少一个
^

以下行:

url(r'login/$', 'login_page', name='login'),
应该是:

url(r'^login/$', 'login_page', name='login'),

我认为URL缺少一个
^

以下行:

url(r'login/$', 'login_page', name='login'),
应该是:

url(r'^login/$', 'login_page', name='login'),

您需要在url中指定它应该以字符串开头,您希望在开头使用
“^”

因此,您可以更新URL.py行

url(r'myapp/', include('myapp.urls')),


您可能希望对
myapp.url中的其他url执行此操作

您需要在url中指定它应该以您希望在开始时使用的字符串开头

因此,您可以更新URL.py行

url(r'myapp/', include('myapp.urls')),


您可能希望对
myapp.url中的其他URL执行此操作

您需要用“^”标记模式的开始

例:


您需要用“^”标记模式的开始

例:


这对我来说确实有效,只是想对信息表示感谢。这对我来说确实有效,只是想对信息表示感谢。您在
myapp/login.py
中定义了
login\u页面
,然后在
url.py
中使用
myapp.views
前缀引用它,什么?您在
myapp/login.py
中定义了
login\u页面
,然后在
url.py
中使用
myapp.views
前缀引用它,什么?