为了账号安全,请及时绑定邮箱和手机立即绑定

Django:在 URL 中发送表单输入

Django:在 URL 中发送表单输入

茅侃侃 2022-10-25 15:52:55
我是 Django 的新手,正在尝试创建一个网络应用学生管理系统,在该系统中,学生由管理员添加,学生可以通过输入他们的注册 ID 来编辑他们的详细信息。在 models.py 我添加了这个模型class Student(models.Model):  gender_choices = [('M', 'Male'), ('F', 'Female')]  enrollment_no = models.CharField(max_length=10, primary_key=True, unique=True)  first_name = models.CharField(max_length=50)  last_name = models.CharField(max_length=50)  father_name = models.CharField(max_length=50)  mother_name = models.CharField(max_length=50)  address = models.CharField(max_length=200)  dob = models.DateField('date of birth')  gender = models.CharField(choices=gender_choices,max_length=1,default=None)  def __str__(self):    return (self.first_name +" "+ self.last_name)在 index.html 页面输入学生注册 ID 的表格是  <form action="{% url 'students:detail' %}" method="post">    <div class="form-group">      <label for="enrollmentid">Enrollment ID: </label>      <input type="text" class="form-control" id="enrollmentid" placeholder="Enter enrollment id">    </div>    <div class="form-group">      <label for="dob">Date of Birth: </label>      <input type="email" class="form-control" id="dob" placeholder="Enter dob (YYYY-MM-DD)">    </div>    <button class="btn btn-primary">Edit Details</button>  </form>现在我想去/students/detail/{enrollment id given by user}路由我如何将输入传递给 url在views.py中我定义了def detail(request, student_id):  try:    student = Student.objects.get(pk=student_id)  except Student.DoesNotExist:    raise Http404("Student do not exist")  return render(request, 'students/detail.html', {'student': student})在 urls.py 我已经定义app_name = 'students'urlpatterns = [    path('', views.index, name='index'),    path('detail/<student_id>', views.detail, name='detail')]如果我手动输入http://localhost:8000/students/detail/ABC1235,那么我成功呈现详细信息页面
查看完整描述

1 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

您应该发出请求,而不是发出 POST 请求GET,因为此请求不会修改数据库中的任何内容。现在,您可以像这样进行实现:


 <form action="{% url 'students:detail' %}" method="GET">

    <div class="form-group">

      <label for="enrollmentid">Enrollment ID: </label>

      <input type="text" class="form-control" name="enrollmentid" placeholder="Enter enrollment id">

    </div>

    <div class="form-group">

      <label for="dob">Date of Birth: </label>

      <input type="text" class="form-control" name="dob" placeholder="Enter dob (YYYY-MM-DD)">

    </div>

    <button class="btn btn-primary">Edit Details</button>

  </form>

然后你可以像这样更新你的视图:


def detail(request):

    try:

       student = Student.objects.get(pk=request.GET.get('enrollmentid'), dob=request.GET.get('dob'))

    except Student.DoesNotExist:

      raise Http404("Student do not exist")

    return render(request, 'students/detail.html', {'student': student})

然后在提交表单时,它将重定向到这样的 url:http://localhost:8000/students/detail/?enrollmentid=123&dob=2020-01-01


查看完整回答
反对 回复 2022-10-25
  • 1 回答
  • 0 关注
  • 83 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信