python – DJANGO – 赋值前引用的局部变量’form’
发布时间:2020-12-20 11:49:50 所属栏目:Python 来源:网络整理
导读:我正在尝试使表单从用户获取信息并使用此信息发送电子邮件.这是我的代码: #forms.pyfrom django import formsclass ContactForm(forms.Form): nome = forms.CharField(required=True) email = forms.EmailField(required=True) msg = forms.CharField( requ
我正在尝试使表单从用户获取信息并使用此信息发送电子邮件.这是我的代码:
#forms.py from django import forms class ContactForm(forms.Form): nome = forms.CharField(required=True) email = forms.EmailField(required=True) msg = forms.CharField( required=True,widget=forms.Textarea ) #views.py from django.shortcuts import render,redirect,get_object_or_404,HttpResponseRedirect,render_to_response from django.core.mail import send_mail from .forms import ContactForm def contato(request): form_class = ContactForm if request.method == 'POST': form = form_class(request.POST) if form.is_valid(): nome = request.POST.get('nome') email = request.POST.get('email') msg = request.POST.get('msg') send_mail('Subject here',msg,email,['testmail@gmail.com'],fail_silently=False) return HttpResponseRedirect('blog/inicio') return render(request,'blog/inicio.html',{'form': form}) #contato.html {% extends "blog/base.html" %} {% block content %} <form role="form" action="" method="post"> {% csrf_token %} {{ form.as_p }} <button type="submit">Submit</button> </form> {% endblock %} 当我尝试进入联系页面时,我收到此错误: local variable 'form' referenced before assignment 它说错误是在这行views.py中: return render(request,{'form': form}) 我对Django有点新意,能帮帮我吗? 解决方法
如果request.method ==’POST’:block,则在此定义表单变量.
如果您使用GET请求访问视图,则表单未定义. 您应该将视图更改为以下内容: def contato(request): form_class = ContactForm # if request is not post,initialize an empty form form = form_class(request.POST or None) if request.method == 'POST': if form.is_valid(): nome = request.POST.get('nome') email = request.POST.get('email') msg = request.POST.get('msg') send_mail('Subject here',{'form': form}) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |