Django 1.11:模板中的URL函数未按预期工作
我已经创建了两个测试应用程序test1和test2,并在视图中添加了相同的函数,在url文件中添加了相同的条目。问题在于,访问哪个应用并不重要,相同的链接appname/link显示为href 无论我是否访问,链接将始终为“” 使用语法url“appname:link”确实有效,并且向html模板发送一个额外的参数以使用应用程序名确实有效,但是如何仅使用url“link”来寻址呢 项目URL:Django 1.11:模板中的URL函数未按预期工作,django,django-rest-framework,django-templates,django-views,django-urls,Django,Django Rest Framework,Django Templates,Django Views,Django Urls,我已经创建了两个测试应用程序test1和test2,并在视图中添加了相同的函数,在url文件中添加了相同的条目。问题在于,访问哪个应用并不重要,相同的链接appname/link显示为href 无论我是否访问,链接将始终为“” 使用语法url“appname:link”确实有效,并且向html模板发送一个额外的参数以使用应用程序名确实有效,但是如何仅使用url“link”来寻址呢 项目URL: from django.conf.urls import include, url from djan
from django.conf.urls import include, url
from django.views import generic
from . import views
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^test1/', include('test1.urls')),
url(r'^test2/', include('test2.urls')),
]
test1 url:
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'testapp/', views.testapp, name='testapp'),
]
test2 url:
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'testapp/', views.testapp, name='testapp'),
]
test1视图:
from django.shortcuts import render
def index(request):
return render(request, 'testme.html')
def testapp(request):
return render(request, 'testme.html')
测试2视图:
from django.shortcuts import render
def index(request):
return render(request, 'testme.html')
def testapp(request):
return render(request, 'testme.html')
testme.html:
<a href = {% url 'testapp' %}>Test Link</a>
是否有一个设置可以设置为仅使用url“linkname”而不使用url“appname:linkname”?您有两个名为testapp的url 将test2 URL更改为(或提供应用程序名称) 另外,在模板中添加引号
<a href ="{% url 'testapp' %}">Test Link</a>
对于
test1
和test2
首先创建两个模板test1
和test2
test1views.py
def index(request):
return render(request,'test1.html')
url(r'^$',views.index, name='test1'),
def index(request):
return render(request, 'test2.html')
url(r'^$',views.index, name='test2'),
path('test1/',include('test1.urls')),
path('test2/', include('test1.urls'))
test1url.py
def index(request):
return render(request,'test1.html')
url(r'^$',views.index, name='test1'),
def index(request):
return render(request, 'test2.html')
url(r'^$',views.index, name='test2'),
path('test1/',include('test1.urls')),
path('test2/', include('test1.urls'))
test1模板test1.html
<a href = {% url 'test1' %}>Test 1 Link</a>
<a href = {% url 'test2' %}>Test 2 Link</a>
test2url.py
def index(request):
return render(request,'test1.html')
url(r'^$',views.index, name='test1'),
def index(request):
return render(request, 'test2.html')
url(r'^$',views.index, name='test2'),
path('test1/',include('test1.urls')),
path('test2/', include('test1.urls'))
test2模板test2.html
<a href = {% url 'test1' %}>Test 1 Link</a>
<a href = {% url 'test2' %}>Test 2 Link</a>
通过使用中间件使其工作,目标是使用多个应用程序和一个模板 类getname(对象): definit(自我,获取响应): self.get\u response=get\u response
def __call__(self, request):
return self.get_response(request)
def process_view(self, request, view_func, view_args, view_kwargs):
request.view_full_name = ".".join((view_func.__module__, view_func.__name__))
view_app_name_temp = request.view_full_name.split('.')
request.view_app_name = view_app_name_temp[0]
在模板上,将href链接更改为以下内容:
href='/{request.view\u app\u name}}/register'按照建议更改了代码,但仍然是相同的问题。然后我误解了您试图实现的目标。我重读了你的帖子,无法实现你的目标