Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django URL将我重定向到其他视图_Python_Django_Url_Routes_Views - Fatal编程技术网

Python django URL将我重定向到其他视图

Python django URL将我重定向到其他视图,python,django,url,routes,views,Python,Django,Url,Routes,Views,我不明白我的问题这是我的代码: url.py urlpatterns = patterns('blog.views', ... url(r'^(?P<slug>.+)$', 'blog', name='blog'), url(r'^membres$', 'membres', name='membres'), ) 这是我的base.html模板中的链接 <li><a href="{% url "membres" %}">List<

我不明白我的问题这是我的代码:

url.py

urlpatterns = patterns('blog.views',
    ...
    url(r'^(?P<slug>.+)$', 'blog', name='blog'),
    url(r'^membres$', 'membres', name='membres'),
)
这是我的base.html模板中的链接

<li><a href="{% url "membres" %}">List</a></li>
  • 当我单击链接时,它会将我重定向到blog视图,然后呈现blog.html而不是使用membres视图

    控制台或模板中没有错误。

    我所有的代码都在我名为“blog”的应用程序中,这是因为urlresolver从上到下采用模式,“membres”匹配
    (?p.+)
    ,所以urlresolver返回
    blog
    视图。把更多的混凝土放高。我还建议在slug regexp中使用更具体的字符,即
    (?P[A-Za-z0-9_ \-]+)

    这是因为urlresolver从上到下采用模式,“membres”匹配

    (?P+)
    ,所以urlresolver返回
    blog
    视图。把更多的混凝土放高。我还建议在slug regexp中使用更具体的字符,即
    (?P[A-Za-z0-9_ \-]+)

    Django在匹配的第一个URL模式处停止。这意味着你的

    blog
    视图——它只是查找一个或多个字符——将把你的
    mysite.com/membres
    URL解释为带有slug
    membres
    的博客文章

    要修复此问题,请尝试交换URL模式的顺序:

    urlpatterns = patterns('blog.views',
        ...
        url(r'^membres$', 'membres', name='membres'),
        url(r'^(?P<slug>.+)$', 'blog', name='blog'),
    )
    
    urlpatterns=patterns('blog.views',
    ...
    url(r“^membres$”,“membres”,name='membres'),
    url(r'^(?P.+)$,'blog',name='blog'),
    )
    

    通常,正是出于这个原因,您希望最通用的模式位于底部。

    Django在匹配的第一个URL模式处停止。这意味着你的
    blog
    视图——它只是查找一个或多个字符——将把你的
    mysite.com/membres
    URL解释为带有slug
    membres
    的博客文章

    要修复此问题,请尝试交换URL模式的顺序:

    urlpatterns = patterns('blog.views',
        ...
        url(r'^membres$', 'membres', name='membres'),
        url(r'^(?P<slug>.+)$', 'blog', name='blog'),
    )
    
    urlpatterns=patterns('blog.views',
    ...
    url(r“^membres$”,“membres”,name='membres'),
    url(r'^(?P.+)$,'blog',name='blog'),
    )
    

    通常,正是出于这个原因,您希望最通用的模式位于底部。

    Django使用第一个匹配的模式。第一个URL正则表达式匹配任何字符串,包括
    /membres
    ,因此Django从不尝试第二个。我建议这样做:

    urlpatterns = patterns('blog.views',
        url(r'^/blog/(?P<slug>[-\w]+)/$', 'blog', name='blog'),
        url(r'^membres/$', 'membres', name='membres'),
    )
    
    urlpatterns=patterns('blog.views',
    url(r'^/blog/(?P[-\w]+)/$,'blog',name='blog'),
    url(r'^membres/$,'membres',name='membres'),
    )
    
    如果您必须有一个全面模式,那么它应该是列表中的最后一个模式,以便其他模式有机会在之前匹配:

    urlpatterns = patterns('blog.views',
        url(r'^membres/$', 'membres', name='membres'),
        # other patterns...
        url(r'^(?P<slug>[-\w]+)/$', 'blog', name='blog'),
    )
    
    urlpatterns=patterns('blog.views',
    url(r'^membres/$,'membres',name='membres'),
    #其他模式。。。
    url(r'^(?P[-\w]+)/$,'blog',name='blog'),
    )
    

    始终包含尾部斜杠也是一个好习惯(默认情况下,Django会将其附加到请求中)。为了匹配slug,我建议
    [-\w]+
    ,它将匹配任何字母数字字符序列,
    \uu
    -
    Django使用匹配的第一个模式。第一个URL正则表达式匹配任何字符串,包括
    /membres
    ,因此Django从不尝试第二个。我建议这样做:

    urlpatterns = patterns('blog.views',
        url(r'^/blog/(?P<slug>[-\w]+)/$', 'blog', name='blog'),
        url(r'^membres/$', 'membres', name='membres'),
    )
    
    urlpatterns=patterns('blog.views',
    url(r'^/blog/(?P[-\w]+)/$,'blog',name='blog'),
    url(r'^membres/$,'membres',name='membres'),
    )
    
    如果您必须有一个全面模式,那么它应该是列表中的最后一个模式,以便其他模式有机会在之前匹配:

    urlpatterns = patterns('blog.views',
        url(r'^membres/$', 'membres', name='membres'),
        # other patterns...
        url(r'^(?P<slug>[-\w]+)/$', 'blog', name='blog'),
    )
    
    urlpatterns=patterns('blog.views',
    url(r'^membres/$,'membres',name='membres'),
    #其他模式。。。
    url(r'^(?P[-\w]+)/$,'blog',name='blog'),
    )
    
    始终包含尾部斜杠也是一个好习惯(默认情况下,Django会将其附加到请求中)。为了匹配一个slug,我建议使用
    [-\w]+
    ,它将匹配任何字母数字字符序列、
    \u
    -