Python 提交表单后重定向到基于函数的详细视图
我创建了一个名为Student的模型。我创建了一个模型表单。提交模型表单后,我想转到详细视图而不是列表视图。 我该怎么做 model.pyPython 提交表单后重定向到基于函数的详细视图,python,django,django-models,django-forms,django-views,Python,Django,Django Models,Django Forms,Django Views,我创建了一个名为Student的模型。我创建了一个模型表单。提交模型表单后,我想转到详细视图而不是列表视图。 我该怎么做 model.py class Student(models.Model): student_name = models.CharField(max_length=100) father_name = models.CharField(max_length=100) forms.py class AdmissionForm(forms.ModelForm):
class Student(models.Model):
student_name = models.CharField(max_length=100)
father_name = models.CharField(max_length=100)
forms.py
class AdmissionForm(forms.ModelForm):
class Meta:
model = Student
fields = '__all__'
views.py
def admission_form(request):
form = AdmissionForm()
if request.method == 'POST':
form = AdmissionForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect('student-list') # i want to redirect to detail view
context = {'form':form}
return render(request, 'student/admission_form.html', context)
在这个录取表中,我想重定向到学生的详细视图,而不是列表视图。我该怎么做呢。在这段代码中,我已重定向到列表视图
def student_detail(request, id):
stud = Student.objects.get(id=id)
context = {'stud':stud}
return render(request, 'student/student_detail.html', context)
url.py
urlpatterns = [
path('admission_form/', views.admission_form, name = 'admission-form'),
path('student/', views.student_list, name = 'student-list'),
path('student/<int:id>/', views.student_detail, name = 'student-detail'),
]
urlpatterns=[
路径('admission_form/',views.admission_form,name='admission form'),
路径('student/',views.student_list,name='student list'),
路径('student/',views.student_detail,name='student detail'),
]
form.save()将返回学生模型的实例。您可以在重定向中使用它的id
,如下所示:
def admission_form(request):
form = AdmissionForm()
if request.method == 'POST':
form = AdmissionForm(request.POST, request.FILES)
if form.is_valid():
instance = form.save()
return redirect('student-detail', id=instance.pk)
它成功了,但我有一个愚蠢的问题。在这段代码中--id=instance.pk,pk是主键,但我不明白pk是如何工作的?为什么这里需要pk?在您的情况下,pk表示主键
id
pk
是一个很好的查询别名,因为主键可以是任何字段(如果您明确定义的话)。有关更多信息,请参阅此文档: