【发布时间】:2019-09-08 21:28:42
【问题描述】:
我正在尝试掌握 Django URL 命名空间的窍门。但我找不到任何示例或文档。
这是我尝试过的。
foo.urls
from django.urls import path, include
from Foo.Views import FooView
app_name ="Foo"
urlpatterns = [
path('', referansView.referans_listele , name="foo"),
path('create/', olusturView.referans_olustur, name="foo_create"),
]
foo.html
<a class="btn btn-success"
href="{% url '{{foo}}:{{foo_create}}' %}?r=Foo: {{request.resolver_match.url_name}}">
fooview.py
from django.shortcuts import render
from Foo.models import FooModels
def foo_create(request):
result ={"Foo":"Foo"}
return render(request,"referanslar.html", result)
我想要的是能够浏览到 /foo/X
【问题讨论】:
-
到处使用
foo使您的示例非常混乱。看起来你想要{% url 'Foo:foo_create' %}(Foo大写F,因为你有app_name = 'Foo')。 -
感谢您的提问。实际上我想动态编写这段代码 ({% url 'Foo:foo_create%}') 。如何在 django 模板中使用上下文变量动态地制作 {%url {{foo}}:{{foo_create}} %}
-
正如我所说,您的示例代码令人困惑。您在模板上下文中没有
foo或foo_create,只有'Foo'。也许您可以使用add过滤器,例如{% url foo|add:':'|add:foo_create %}. -
我很抱歉。我在 Django Project 中编辑视图。此代码如下所示 from django.shortcuts import render from Foo.models import FooModels def foo_create(request): result ={"Foo":"Foo_appName","fooView":"fooView" } return render(request,"referanslar. html", 结果)
-
那么你会做
{% url Foo|add:':'|add:fooView %}。但是,将 {'fooView': 'Foo:fooView'}` 传递给模板并执行{% url fooView %}可能更简单。或者您可以使用{'foourl': reverse('Foo:fooView')}将反向网址传递给模板,然后使用{{ foourl }}。