как передать объект формы в html и использовать каждый элемент в объекте в django - PullRequest
1 голос
/ 17 апреля 2020

У меня есть класс, называемый пользовательской формой (UserMyProfilePersonalForm)

    class UserMyProfilePersonalForm(forms.ModelForm):
        username = forms.CharField(widget=forms.TextInput, max_length=50)
        first_name = forms.CharField(widget=forms.TextInput, max_length=100)
        last_name = forms.CharField(widget=forms.TextInput, max_length=100)
        email = forms.CharField(widget=forms.EmailInput, disabled=True)
        dob = forms.CharField(widget=forms.DateInput, required=True)
        profile_pic = forms.CharField(widget=forms.TextInput)

        def __str__(self):
            return f"{self.username},{self.first_name}, {self.last_name},{self.email},{self.dob}, self.profile_pic}"

    class Meta():
        model = UserMyProfilePersonal
        fields = ("email", )

, затем в своем файле просмотра я создал объект этого класса

    newUserMyProfilePersonalForm = UserMyProfilePersonalForm.from_json(user_detail)
    print(newUserMyProfilePersonalForm.email)
    context_data = {"newUserMyProfilePersonalForm": newUserMyProfilePersonalForm}
    return render(request, "home.html", context_data)

Теперь я не знаю как получить данные в HTML. Я пробовал несколько вещей 1. Код ниже выводит все значения в виде dummyusername, fname, lname,email@gmail.com, 10/05/1990 ... Этот вывод выглядит так же, как str function

{{newUserMyProfilePersonalForm}}
Я попытался {{newUserMyProfilePersonalForm.as_p}}, но при этом все элементы выводятся в виде формы с текстовым полем и меткой, но без какого-либо значения в текстовом поле.

Я хочу иметь текстовое поле со значениями в качестве пользовательских данных, например адрес электронной почты, имя пользователя, потому что я хочу создать раздел "РЕДАКТИРОВАТЬ PRofile".

1 Ответ

0 голосов
/ 20 апреля 2020

поэтому после 2 дней усилий и прочтения документации я разобрался в этом. Ответ, как правило, очень прост.

Форма newUserMyProfilePersonalForm = UserMyProfilePersonalForm.from_json(user_detail) была действительно недействительной. Я запустил newUserMyProfilePersonalForm.is_valid(), и это дало False в качестве вывода.

Когда форма недействительна, она не может быть отображена как html элементы, так как я ее использовал.

Ниже приведен стандартный способ сделать это.

if request.method = "POST":
    obj = userform(request.POST)
    if obj.is_valid():
        <do something with it>
    else:
        <return the invalid form to the user to show the errors>

else:
    obj = userform()
   <return this blank obj form to user so that whe can fill it>

вот и все. это так просто.

...