如何编写带有两个子弹的Django视图?
每个子弹都来自不同的型号。
我想获取www.example.com/category/slug1/slug2
请提供示例代码。
Views.py
class SubjectDetailView(generic.DetailView, SingleObjectMixin):
model = Programmesearch
template_name = 'mnsdirectory/subject_detail.html'
slug_field = 'subjectslug'
slug_url_kwarg = 'subjectslug'
Urls.py
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.py:
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)
答案 0 :(得分:1)
首先,我个人的建议是,您必须具有良好的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'),
答案 1 :(得分:1)
完美无缺,然后用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})
答案 2 :(得分:0)
@ ulvi-damirli。您可以像这样使用 urls.py :
Urls.py
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
,并在您的 views.py 中,您可以像这样捕获这些:
Views.py
re_path(r'^(?P<slug>[\w_-]+)/(?P<studylevel>[\w_-]+)/$',
views.SubjectDetailView.as_view(), name='subject-detail'),
希望我能帮助您,让我知道它是否有效