#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
и fill5. дело в том, почему форма не отображается в модели, она не показывает
signupForm
поля в модели, в чем моя ошибка
Ответ №1:
Вы просматриваете «формы регистрации», но форма регистрации — это всего лишь один элемент вашего контекста:
View:
return render(request,"home.html" ,{'signupforms':fm})
Html:
{% for fm in signupforms %}
Я не уверен на 100%, но я предполагаю, что fm будет emtpy после тега for