Django 从模板重定向到 AdminSite 视图
Django redirect to AdminSite Views from template
我通过子类化 AdminSite 在管理中创建了一些自定义视图。下面是:
class MyAdminSite(AdminSite):
# login_template = 'screens/login.html'
def get_urls(self):
urls = super().get_urls()
urls += [
path('view', self.admin_view(self.home)),
path('details',self.admin_view(self.details)),
path('listing',self.admin_view(self.listing)),
]
return urls
def home(self, request):
return render(request, 'base.html')
def details(self,request):
return render(request, 'screens/details.html')
def listing(self,request):
return render(request, 'screens/listing.html',content)
site = MyAdminSite()
在 html 模板之一中,我想重定向到上面创建的视图之一。以下是我尝试过的,
<div class="bg-light border-right" id="sidebar-wrapper">
<div class="sidebar-heading">Admin</div>
<div class="list-group list-group-flush">
<a href="{% url 'admin:details' %}" class="list-group-item list-group-item-action bg-light">Edit Details</a>
</div>
</div
我尝试了 {% url 'admin:details' %}
和 {% url 'admin/details' %}
,但我收到了这个错误:
django.urls.exceptions.NoReverseMatch: Reverse for 'details' not found. 'details' is not a valid view function or pattern name.
我的主要 urls.py 的 urlpatterns 为:
urlpatterns = [
path('admin/', admin.site.urls),
]
您必须为您的网址提供 name
- path
(Django Docs):
class MyAdminSite(AdminSite):
# login_template = 'screens/login.html'
def get_urls(self):
urls = super().get_urls()
urls += [
path('view', self.admin_view(self.home), name="home_view"),
path('details',self.admin_view(self.details), name="screen_details"),
path('listing',self.admin_view(self.listing), name="screen_listing"),
]
return urls
...
您可以在模板中使用:{% url 'admin:screen_details' %}
在视图或其他方法中:reverse("admin:screen_details")
我通过子类化 AdminSite 在管理中创建了一些自定义视图。下面是:
class MyAdminSite(AdminSite):
# login_template = 'screens/login.html'
def get_urls(self):
urls = super().get_urls()
urls += [
path('view', self.admin_view(self.home)),
path('details',self.admin_view(self.details)),
path('listing',self.admin_view(self.listing)),
]
return urls
def home(self, request):
return render(request, 'base.html')
def details(self,request):
return render(request, 'screens/details.html')
def listing(self,request):
return render(request, 'screens/listing.html',content)
site = MyAdminSite()
在 html 模板之一中,我想重定向到上面创建的视图之一。以下是我尝试过的,
<div class="bg-light border-right" id="sidebar-wrapper">
<div class="sidebar-heading">Admin</div>
<div class="list-group list-group-flush">
<a href="{% url 'admin:details' %}" class="list-group-item list-group-item-action bg-light">Edit Details</a>
</div>
</div
我尝试了 {% url 'admin:details' %}
和 {% url 'admin/details' %}
,但我收到了这个错误:
django.urls.exceptions.NoReverseMatch: Reverse for 'details' not found. 'details' is not a valid view function or pattern name.
我的主要 urls.py 的 urlpatterns 为:
urlpatterns = [
path('admin/', admin.site.urls),
]
您必须为您的网址提供 name
- path
(Django Docs):
class MyAdminSite(AdminSite):
# login_template = 'screens/login.html'
def get_urls(self):
urls = super().get_urls()
urls += [
path('view', self.admin_view(self.home), name="home_view"),
path('details',self.admin_view(self.details), name="screen_details"),
path('listing',self.admin_view(self.listing), name="screen_listing"),
]
return urls
...
您可以在模板中使用:{% url 'admin:screen_details' %}
在视图或其他方法中:reverse("admin:screen_details")