【问题标题】:URL issue in Django templateDjango 模板中的 URL 问题
【发布时间】:2016-02-02 09:56:19
【问题描述】:

这个问题和my last question有很大关系。

我已经看到使用模板会在我正在关注的教程中产生一些 Django 版本问题,我认为网址有问题。这是我的 urls.py:

from django.conf.urls import patterns, url
from django.contrib import admin

urlpatterns = patterns('',
url(r'^preguntas/$', 'preguntasyrespuestas.views.index', name='preguntas'),
url(r'^preguntas/(?P<pregunta_id>\d+)/$', 'preguntasyrespuestas.views.pregunta_detalle', name='pregunta_detalle')
)

并且该链接不起作用是在那个 index.html 文件中:

{% extends "base.html" %}

{% block title %}Questions{% endblock %}

{% block content %}
{% for pregunta in preguntas %}
<a href="(% url "pregunta_detalle" pregunta.id %}">{{ pregunta.asunto }} ?</a><br/>
{% endfor %}
{% endblock %}

另外,这是我的views.py:

 from django.http import HttpResponse,Http404
 from preguntasyrespuestas.models import Pregunta
 from django.shortcuts import get_object_or_404, render_to_response

 def index(request):
     preguntas = Pregunta.objects.all()
     return render_to_response('preguntasyrespuestas/index.html',
                                    {'preguntas': preguntas})

 def pregunta_detalle(request, pregunta_id):
     pregunta = get_object_or_404(Pregunta, pk=pregunta_id)
     return render_to_response('preguntasyrespuestas/pregunta_detalle.html',
                                    {'pregunta': pregunta})

浏览器报告的错误是这样的:

 Using the URLconf defined in primerproyecto.urls, Django tried these URL patterns, in this order:
 ^preguntas/$ [name='preguntas']
 ^preguntas/(?P<pregunta_id>\d+)/$ [name='pregunta_detalle']
 The current URL, preguntas/(% url, didn't match any of these.

相反,如果我在浏览器中键入 URL '127.0.0.0.1:8000/preguntas/1',它就会出现。什么样的 URL 连接可能是错误的?找不到答案...非常感谢,谢谢

【问题讨论】:

    标签: python django templates url


    【解决方案1】:

    如果您在 URL 名称周围使用单引号,它应该可以工作。您还需要将href 中的左括号更改为花括号{

    <a href="{% url 'pregunta_detalle' pregunta.id %}">{{ pregunta.asunto }} ?</a>
             ^      ^                ^
    

    【讨论】:

    • 您实际上不需要更改那里的引号;由于 HTML 标签和模板标签在不同的上下文中,所以不会混淆。
    • 有趣 - 我没有意识到。感谢您的提示。
    猜你喜欢
    • 2020-02-22
    • 2011-10-22
    • 1970-01-01
    • 2012-05-14
    • 1970-01-01
    • 2018-05-04
    • 1970-01-01
    • 2020-09-12
    • 2017-12-19
    相关资源
    最近更新 更多