django url 正则表达式不匹配
Posted
技术标签:
【中文标题】django url 正则表达式不匹配【英文标题】:django url regex doesn't match 【发布时间】:2011-08-17 17:50:58 【问题描述】:在开发服务器上使用 Django 1.3
我尝试联系:http://127.0.0.1:8000/lang/en
答案是:
使用定义在 pruebas.urls,Django 尝试了这些 URL 模式,按以下顺序:
^admin/ ^correo/$ ^登录/$ ^lang/(?P\w+)/$ ^site_static/(?P.*)$
当前网址 , 不匹配任何 这些。
这是我的“urls.py”:
from pruebas import settings
from django.conf.urls.defaults import *
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'pruebas.views.home', name='home'),
# url(r'^pruebas/', include('pruebas.foo.urls')),
# Uncomment the admin/doc line below to enable admin documentation:
# url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
# Uncomment the next line to enable the admin:
url(r'^admin/', include(admin.site.urls)),
(r'^correo/$', 'mailclient.views.index'),
(r'^login/$', 'kusers.views.klogin'),
# Language change
(r'^lang/(?P<lang_code>\w+)/$', 'kusers.views.lang'),
)
if settings.DEBUG:
urlpatterns += patterns('',
(r'^site_static/(?P<path>.*)$', 'django.views.static.serve',
'document_root': settings.STATIC_ROOT),)
我认为那行:
(r'^lang/(?P\w+)/$', 'kusers.views.lang'),
将与“http://127.0.0.1:8000/lang/en”匹配,但似乎我错了。
提前致谢
kurs/views.py 中的代码是:
def lang(request, lang_code):
request.session['django_language'] = lang_code
return HttpResponseRedirect( "/" )
已解决。
问题不在于 urls.py 配置。问题在于“kuser”应用程序文件夹结构。
谢谢
【问题讨论】:
你的lang
查看代码是什么样的?
【参考方案1】:
如果你在 url 上加上一个斜杠,它就会起作用,如下所示:
http://127.0.0.1:8000/lang/en/
【讨论】:
末尾的$符号表示表达式必须以给定的表达式结尾。如果没有 $,/lang/en/blah 也会匹配。另外,请尝试在您的 settings.py 中添加 APPEND_SLASH = True,如docs 中所述以上是关于django url 正则表达式不匹配的主要内容,如果未能解决你的问题,请参考以下文章