在html页面中填写注册表单后,它会给出这个错误,并使用用户名和密码并将值存储在登录表单中

2024-04-24 13:35:44 发布

您现在位置:Python中文网/ 问答频道 /正文

在html页面中填写注册表单后,它会给出此错误,并使用用户名和密码并将值存储在登录表单中:

TypeError at /login/ argument of type 'NoneType' is not iterable.  

This is the error

模型.py:

^{pr2}$

表单.py:

from django import forms
from .models import signup
from .models import login

class loginForm(forms.ModelForm):
    password=forms.CharField(widget=forms.PasswordInput())
    class Meta:
            model=login
            fields=['username','password']


class SignUpForm(forms.ModelForm):
    password=forms.CharField(widget=forms.PasswordInput())
    class Meta:
            model=signup
            fields=['username','full_name', 'email','department','password','pic']

视图.py:

from django.shortcuts import render
from .forms import  SignUpForm
from .forms import  loginForm
from django.db import connection

def home(request):
    title= 'welcome'
    form = SignUpForm(data = request.POST or None)
    print(form.is_valid)
    if form.is_valid():
        instance = form.save(commit=False)
        instance.save()
        print(instance)
        print(instance.email)
    context = {
        "title": title,
        "form": form,           
    }       
    return render(request,"base.html", context)

def login(request):
    form = loginForm(data = request.POST or None)
    if form.is_valid():
        instance = form.save(commit=False)

        username=instance.username
        password=instance.password
        row=auth(username,password)
        if password in row:
            instance.save()
            form1=SignUpForm
            context={
                "form":form1,
                "instance":instance
            }
            return render(request, "profile.html", context)
    title= 'welcome back'
    context ={
        "title":title,
        "form":form    
    }       
    return render(request, "login.html", context)

def auth(username,password):
    cursor = connection.cursor()
    cursor.execute("SELECT password FROM teacher_signup WHERE username = %s", [username])
    row = cursor.fetchone()    
    return row

当单击“注册”按钮[如果密码在第行:]时,将以某种方式调用此行。在

signup page


Tags: instancefromimportformtitleisrequesthtml
1条回答
网友
1楼 · 发布于 2024-04-24 13:35:44

视图中存在多个错误:

def login(request):
    form = loginForm(request.POST or None) # <  corrected
    if form.is_valid():
        instance = form.save(commit=False)
        username = instance.username
        password = instance.password
        row = auth(username,password)
        if password in row:
           instance.save()
           form1 = SignUpForm() # <  you forgot () 
           context={
              "form":form1,
              "instance":instance
           }
           return render(request, "profile.html", context)             

   title= 'welcome back'
   context ={
       "title":title,
       "form":form
   }
   return render(request, "login.html", context)

相关问题 更多 >