Как показать информацию о пользователе (специальный ID, имя, фамилию) в другом шаблоне после успешной отправки формы в Django

Как показать информацию пользователя (специальный ID, firstName, lastname) в другом шаблоне после успешной отправки формы в Django. У меня есть форма для запроса информации о пользователе (общая информация, образование, опыт) и я даю случайный уникальный test_id. После того, как пользователь успешно отправил форму, я должен показать его/ее 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})

Вы можете передать ваш queryset непосредственно в ваш шаблон Django и использовать этот queryset для отображения данных соответствующим образом. Таким образом, ваша функция будет выглядеть следующим образом...

View

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() действительно работает, но это не самый предпочтительный способ, и иногда он может дать вам неверные данные, если вы поместили запрос на упорядочивание в класс модели. Что вы можете сделать, так это

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)

Это даст вам тот самый экземпляр, который вы только что сохранили в предыдущем шаге просмотра.

Вернуться на верх