Django 1.11:模板中的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

我已经创建了两个测试应用程序test1和test2,并在视图中添加了相同的函数,在url文件中添加了相同的条目。问题在于,访问哪个应用并不重要,相同的链接appname/link显示为href

无论我是否访问,链接将始终为“”

使用语法url“appname:link”确实有效,并且向html模板发送一个额外的参数以使用应用程序名确实有效,但是如何仅使用url“link”来寻址呢

项目URL:

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

test1
views.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
url.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>
test2
url.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'

按照建议更改了代码,但仍然是相同的问题。然后我误解了您试图实现的目标。我重读了你的帖子,无法实现你的目标