反向查找“ update_student”,未找到任何参数。尝试了1个模式:['(?P [-a-zA-Z0-9 _] +)/ update $']
上面显示错误,请告诉是否有人知道如何解决此问题
urls.py
path('',views.index,name="home"),
path('<slug:name>/update',views.student_update,name="update_student"),
path('delete/<slug:name>',views.student_delete,name="delete_student")
student_update.html
<div class=" row d-flex justify-content-center">
<div class="col-md-6 box-shadow">
<form action="{% url 'update_student' %}" method="POST" class="form">
{% csrf_token %}
{{updateform|crispy}}
<button class="btn btn-primary form-control">update</button>
</form>
</div>
views.py:-
def student_update(request,name):
instance=get_object_or_404(Student,name=name)
print(instance)
form=StudentForm(request.POST,instance=instance)
print(form)
if form.is_valid():
form.save()
return redirect('home')
return render(request,'webapp/student_update.html',{'updateform':form})
models.py
from django.db import models
从django.core.validators中的导入MaxValueValidator,MinValueValidator 从django.contrib.auth.models导入用户
班学生(models.Model): 性别=( ('M','male'), ('F','female') )
name=models.CharField(max_length=50)
age=models.PositiveIntegerField(validators=[MinValueValidator(18),MaxValueValidator(50)])
sex=models.CharField(max_length=1,choices=gender)
def __str__(self):
return self.name
forms.py
from django import forms
从django.core.validators中的导入MaxValueValidator,MinValueValidator 从webapp.models导入Student
StudentForm(forms.ModelForm):
class Meta:
model = Student
fields=['name','age','sex']
答案 0 :(得分:1)
您的模板(表单操作)中有{% url 'update_student' %}
,这是由于update_student
模式需要一个name
参数引起的错误。
因此,您要么需要将其更改为{% url 'update_student' name=form.instance.name %}
,但是由于您的表单所发布的网址与它所呈现的网址相同,因此完全删除action
属性更加容易。