【问题标题】:Django reverse lookup rendering the same (wrong) templateDjango反向查找呈现相同(错误)模板
【发布时间】:2015-09-13 16:12:45
【问题描述】:

我有一个小型简历网站,在点击反向 URL 时没有呈现不同的模板。

站点/脚本/模板/脚本/index.html:

<p>were at main</p>

<a href="{% url 'scripts:python' %}">python</a>
<br/>
<a href="{% url 'scripts:bash' %}">bash</a>

这些链接 'python' 和 'bash' 在 URL 栏中有效,它们将我们带到 localhost:scripts/bash/ 和 localhost:scripts/python/,但显示的网页完全相同(index.html 或 localhost :scripts/)

网站/脚本/urls.py:

from django.conf.urls import patterns, include, url
from scripts import views


urlpatterns = patterns('',
    url(r'$',            views.index,           name='index'),
    url(r'python/$',     views.access_python,   name='python'),
    url(r'bash/$',       views.access_bash,     name='bash'),
)

网站/脚本/views.py:

from django.shortcuts import render

def index(request):
    return render(request, 'scripts/index.html')

def access_python(request):
    return render(request, 'scripts/python.html')

def access_bash(request):
    return render(request, 'scripts/bash.html')

site/urls.py(带有 settings.py 的主文件夹):

from django.conf.urls import patterns, include, url

urlpatterns = patterns('',
    url(r'scripts/',    include('scripts.urls', namespace='scripts')),
)

单击“bash”应该检索:

站点/脚本/模板/脚本/bash.html:

<p>we're at bash</p>

为什么反向查找会到达正确的 URL,但不会调用该 URL 模式所需的关联视图?谢谢

【问题讨论】:

    标签: python django django-urls


    【解决方案1】:

    索引正则表达式正在捕获任何可能的模式,因为它匹配字符串的任何结尾。我通过将索引模式移到其他 2 之后发现。应该是:

    urlpatterns = patterns('',
    
        url(r'^$',            views.index,           name='index'),
        url(r'^python/$',     views.access_python,   name='python'),
        url(r'^bash/$',       views.access_bash,     name='bash'),
    )
    

    任何空白索引 url (r'^$') 都需要字符串的开头和结尾,以匹配该模式第一部分之后的空字符串(在本例中为 'scripts/')

    【讨论】:

      猜你喜欢
      • 2013-08-18
      • 1970-01-01
      • 1970-01-01
      • 2021-01-05
      • 2020-03-13
      • 2015-06-17
      • 2021-06-19
      • 2016-03-09
      • 1970-01-01
      相关资源
      最近更新 更多