如何在 Django 中成功提交表单后在另一个模板中显示用户信息(特殊 ID、名字、姓氏)

How to show user's information (special ID, firstName, lastname) in another template after successfully form submission in Django

如何在 Django 中成功提交表单后在另一个模板中显示用户信息(特殊 ID、名字、姓氏)。 我有一个表格来询问用户信息(一般信息、教育、经验),我随机给出唯一的 test_id。用户提交表单成功后,我必须显示 his/her test_id 来记住。 我对视图形式一无所知。我的解决方案有点笨

My model:

class UserForm_uz(models.Model):

      test_id = models.CharField(default=random_string,max_length=5,editable=False,unique=True)
      rasm = models.ImageField(upload_to='media/rasmlar',null=True,blank=True)
      jobName = models.ForeignKey(Job, on_delete=models.CASCADE)
      lastName = models.CharField(max_length=200)
      firstName = models.CharField(max_length=200)
      middleName = models.CharField(max_length=200,blank=True,null=True)
      birthData = models.DateField()
      nation = models.CharField(max_length=50,blank=True,null=True)

我的看法:

class FormAfterView(View):

    def get(self,request):
        obj = UserForm_uz.objects.all().last()
        test_id = obj.test_id
        firstName = obj.firstName
        lastName = obj.lastName
        return render(request,"formafter.html",{"test_id":test_id,"firstName":firstName,"lastName":lastName})

您可以将查询集直接传递给 Django 模板,并使用该查询集相应地显示数据。所以你的函数会像这样...

查看

class FormAfterView(View):
    def get(self,request):
        obj = UserForm_uz.objects.all().last()
        context = {
           'user_details': obj,
        }
        return render(request,"formafter.html", context)

Django 模板

<p>{{user_details.test_id}}</p>
<p>{{user_details.firstname}}</p>
........

此外,您应该尝试使用 URL 传递参数以从模型中获取数据。 使用 obj = UserForm_uz.objects.all().last() 确实有效,但它不是首选方式,如果您在模型 class 中放置排序查询,有时它会给您错误的数据。你能做的是

URL 文件

urlpatterns = [
    path("form_after_view/<string:main_id>", views.FormAfterView, name="form_after_view"),
]

表单保存视图

class FormAfterView(View):

    def post(self,request):
        form = Formclass(request.POST)
        if form.is_valid():
           form.save()
           return redirect('form_after_view', form.main_id)

下一步查看

class FormAfterView(View):
      def get(self,request, main_id):
        obj = UserForm_uz.objects.get(main_id=main_id)

这将为您提供刚刚在上一步视图中保存的确切实例。