/ tinku / update上的NoReverseMatch

时间:2019-12-06 13:33:52

标签: python django

反向查找“ 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']

1 个答案:

答案 0 :(得分:1)

您的模板(表单操作)中有{% url 'update_student' %},这是由于update_student模式需要一个name参数引起的错误。

因此,您要么需要将其更改为{% url 'update_student' name=form.instance.name %},但是由于您的表单所发布的网址与它所呈现的网址相同,因此完全删除action属性更加容易。