如何用两个slug写一个Django视图?
每个slu are来自不同的模型。
我想获得www.example.com/category/slug1/slug2
请提供示例代码。
views.朋友
class SubjectDetailView(generic.DetailView, SingleObjectMixin):
model = Programmesearch
template_name = 'mnsdirectory/subject_detail.html'
slug_field = 'subjectslug'
slug_url_kwarg = 'subjectslug'
URLs.朋友
app_name = 'mnsdirectory'
urlpatterns = [
path('', views.IndexView.as_view(), name='index'), #views.indexSubjectDetailView(View)
path('study/<slug:subjectslug>/', views.SubjectDetailView.as_view(), name='subject-detail'),
path('study-abroad/<slug:studylevelslug>/', views.StudylevelDetailView.as_view(), name='studylevel-list'),
]
models.朋友:
class Programmesearch(models.Model):
full_subject_name = models.CharField(max_length=100, blank=False, null=False)
subjectslug = models.SlugField(unique=True, editable=False, max_length=100)
class StudyLevel(models.Model):
study_level = models.CharField(max_length=100, blank=False, null=False)
studylevelslug = models.SlugField(unique=True, editable=False, max_length=100)
首先,我个人的建议是,你必须有一个良好的POO PYTHON基础并且熟悉MVT架构,Django工作的MVC模型视图控制器非常相似,现在在View中它是python的所有逻辑部分,那里是我们将要声明的地方,或者我们是否将结束在哪个模板中我们将绘制由VIEW-Server处理的数据。
那么,首先你要如何使用这两个模型,我们将做的是以下内容:
我们导入以下方法
from django.shortcuts import render
from django.http import HttpResponse
from django.views.generic import View
class SubjectDetailView(View):
def get(self, request, *args, **kwargs):
queryset = Programmesearch.objects.all()
return render(request, 'mnsdirectory/subject_detail.html', {'element':queryset})
最后只需在网址中输入:
path('study/slug1/slug2/', views.SubjectDetailView.as_view(), name='subject-detail'),
完美然后发送到寺庙一个更复杂的字典2键:
class SubjectDetailView(View):
def get(self, request, *args, **kwargs):
queryset = Programmesearch.objects.all()
queryset2 = StudyLevel.objects.all()
return render(request, 'mnsdirectory/subject_detail.html', {'element':queryset,'element2':queryset2})
@ ulvi-damirli。您可以像这样使用urls.py:
URLs.朋友
re_path(r'^(?P<slug>[\w_-]+)/(?P<studylevel>[\w_-]+)/$',
views.SubjectDetailView.as_view(), name='subject-detail'),
在你的views.py中,你可以像这样抓住这些slu ::
views.朋友
class SubjectDetailView(generic.DetailView, SingleObjectMixin):
model = Programmesearch
template_name = 'mnsdirectory/subject_detail.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
# subjectslug = self.object.slug # Not necessary since It's a DetailView
studyLevel = StudyLevel.objects.filter(
study_level=self.kwargs.get('studylevel', None))
希望我能帮助你,让我知道它是否有效