Может ли кто-нибудь найти ошибки, почему поля формы не отображаются в модели из django

#python #django

#python #django

Вопрос:

Кто-нибудь может сказать мне, почему на моей домашней странице не отображается for , форма модели для регистрации пользователя, я делаю это с помощью django UserCreationForm, но на домашней странице не отображается мой views.py файл с подробным описанием импорта

  from django.shortcuts import render
from .forms import signUpForm , LogInForm
from django.shortcuts import redirect
from django.contrib import messages
from django.contrib.auth import authenticate ,login as auth_login ,logout as auth_logout
from django.contrib.auth.decorators import login_required
from django.shortcuts import render , HttpResponseRedirect
    def signup(request):
    if not request.user.is_authenticated:
        fm=signUpForm()
        if request.method == 'POST':
            fm = signUpForm(request.POST)
            if fm.is_valid():
                fm.save()
                return redirect('home.html')
                
        else:
            fm = signUpForm()
        return render(request,"home.html" ,{'signupforms':fm})
 

home.html здесь я просто использую модель начальной загрузки и отображаю форму для регистрации, используя модель в

 <div class="modal fade modelform" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog" role="document">
    <div class="modal-content">

      <div class="modal-header text-center ">
        <h5 class="modal-title text-dark" id="exampleModalLabel">Login using your credentials
</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">amp;times;</span>
        </button>
      </div>
      <div class="modal-body">
      


<form action = '' method ='POST' novalidate >
{% csrf_token %}
{% for fm in signupforms %} 

<div class="form-group mt-0"> {{fm.label_tag}} {{fm}} <small class = 'text-danger'>{{fm.errors|striptags}}</small><br></div>
{% endfor %}


 <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
        <input class="btn btn-primary my-3" type="submit" value="Submit">

   </div>

 </form>
    </div>
  </div>
</div>
</div>
 

forms.py когда я создаю форму и передаю ее для отображения, проблема в том, что эта форма не отображается на странице

   from .models import loginForm
from django.contrib.auth.forms  import UserCreationForm   # AuthenticationForm ,UsernameField create default form 
from django.contrib.auth.models import User
from django.forms import ModelForm
    
class signUpForm(UserCreationForm):
      name =forms.CharField(max_length=130 ,required=True ,label = 'Your Name',widget =forms.TextInput(attrs={'class':"form-control"}))
      email = forms.EmailField(required=True , max_length=130,widget =forms.TextInput(attrs={'class':"form-control"}))
      password1 = forms.CharField(label = 'Password', required=True,widget=forms.PasswordInput(attrs={ 'class':"form-control"}))
      password2 =forms.CharField(label = ' Confirm  Password',required=True,widget=forms.PasswordInput(attrs={ 'class':"form-control" }))
      
      class Meta:
         model = User
         fields  = ['name','email']
 

Комментарии:

1. В инструкции else в views.py , после строки .»fm = signUpForm()» .. если вы скажете print(fm) .. правильно ли печатается форма?

2. Также, пожалуйста, покажите, какой импорт для регистрации в views.py

3. Есть ли какой-либо код для обработки, когда request.user.is_authenticated значение «True»? Пользователь уже вошел в систему?

4. для регистрации есть форма if not request.user.is_authenticated и fill

5. дело в том, почему форма не отображается в модели, она не показывает signupForm поля в модели, в чем моя ошибка

Ответ №1:

Вы просматриваете «формы регистрации», но форма регистрации — это всего лишь один элемент вашего контекста:

 View:
return render(request,"home.html" ,{'signupforms':fm})

Html:
{% for fm in signupforms %} 
 

Я не уверен на 100%, но я предполагаю, что fm будет emtpy после тега for