【问题标题】:What is {% url %} in django?django 中的 {% url %} 是什么?
【发布时间】:2019-09-15 12:18:18
【问题描述】:

我有 Django 模板:

<form id="contactForm" method="get" action="{% url 'contact-form' %}">
...
</form>

{% url 'contact-form' %} 是什么?


这里是 urls.py:

from django.conf import settings
from django.contrib import admin
from django.urls import include, path
from app.views import index, single_post, contact_form


urlpatterns = [
    path("admin/", admin.site.urls),
    path("", include("django.contrib.staticfiles.urls")),
    path("single-post/", single_post, name="single-post"),
    path("contact-form/", contact_form, name="contact-form"),
    path("", index),
]

做什么 path("contact-form/", contact_form, name="contact-form") 什么意思?

【问题讨论】:

  • 你看the documentation了吗?
  • 什么是“联系表格”?这是对某个网址的引用吗?如果是,那么在哪里可以找到?
  • @LoganLee:它是一个视图的名称,所以在你的urls.py 中有一些path(.., name='contact-form'),或者url(.., name='contact-form'),等等。
  • @LoganLee:看起来你叉子上的干草太多了。 Django 的教程为您提供了分步介绍,让您首先了解什么是路径、视图等。只是从某个地方随机开始可能不是了解 Django 工作原理的最有效方式。

标签: django templates


【解决方案1】:

要链接到应用程序中的另一个页面,使用带有应用程序名称和页面名称的 {% url 'app_name:page_name' %} 模板标签重建指向它的 URL:

Web 框架使用命名空间来消除不同应用程序之间的冲突。例如,指定 {% url app1:home %} 和 {% url app2:home %} 表示主页属于 app1 还是 app2。 Web 框架使用文件名(不带 .html 扩展名)作为页面名称,除非您在 URL 映射中为模板明确指定不同的内部名称。例如,除非您设置自定义 URL 映射,否则 mypage.html 的名称是“mypage”。 例如,要链接到名为“myapp”的应用程序中的 mypage.html,请在模板中使用以下代码:

This is the URL for "mypage": <a href="{% url 'myapp:mypage' %}">Click here</a>\

更多阅读链接: https://docs.djangoproject.com/en/2.2/topics/http/urls/

【讨论】:

    【解决方案2】:

    {% url 'contact-form' %} 是一种在模板中添加指向另一个页面的链接的方法。 url 告诉模板查看 URLs.py 文件。

    右侧引号中的内容,在本例中为contact-form,告诉模板查找带有name=contact-form 的内容。

    path("contact-form/", contact_form, name="contact-form") 具有三个组件。最靠近右侧的name="contact-form" 是名称,它的功能与人类名称非常相似,因为它是该特定路径的引用方式。

    contact_form 告诉它一旦找到应该执行哪个代码块来打开该 URL。

    "contact-form/" 是网站上的 URL。把它想象成视图的邮寄地址。

    【讨论】:

      【解决方案3】:

      在模板中用于重定向到某个URL。

      例如,如果你使用过“path('', views.test, name = "testurl")

      然后你可以使用“testurl”来重定向测试views.py

      这更像是在 HTML 中使用 'a' 标签来重定向到另一个页面!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-06-27
        • 2011-06-29
        • 2018-03-25
        • 2018-06-08
        • 2020-07-10
        • 1970-01-01
        • 2011-09-05
        相关资源
        最近更新 更多