Python ';WSGIRequest&x27;对象没有属性';电子邮件';

Python ';WSGIRequest&x27;对象没有属性';电子邮件';,python,django,Python,Django,更新3 在再次阅读教程后,我通过在下面添加更多代码解决了这个问题 ,但在按下按钮后出现错误“WSGIRequest”对象没有属性“Email” 按保存按钮后,链接没有查询字符串 def post_new(request): #post = get_object_or_404(Post) #form = PostForm() #return render_to_response(request, 'registration.html', {'pk': 12})

更新3

在再次阅读教程后,我通过在下面添加更多代码解决了这个问题 ,但在按下按钮后出现错误“WSGIRequest”对象没有属性“Email”

按保存按钮后,链接没有查询字符串

def post_new(request):

    #post = get_object_or_404(Post)

    #form = PostForm()

    #return render_to_response(request, 'registration.html', {'pk': 12})

    #return render(request, 'registration.html', {'form': form})
    if request.method == "POST":
        form = PostForm(request.POST)
        if form.is_valid():
            post = form.save(commit=False)

            #post.author = request.user

            post.Email = request.Email

            post.ProjectName = request.ProjectName

            post.UserName = request.UserName

            post.Company = request.Company

            post.Contact = request.Contact

            post.InitialPassword = request.InitialPassword

            post.UserType = request.UserType

            post.BusinessType = request.BusinessType

            post.published_date = timezone.now()

            post.publish()
            #self.published_date = timezone.now()
            return redirect('post_detail', pk=post.pk)
            #isexist = os.path.isfile('newusers.csv') 

            #with open('/home/martin/Downloads/site1/site1/reg/newusers.csv', 'a') as csvfile:

             #fieldnames = ['name','email address','project','initial password','userType','contact','businessType','company']

             #writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

             #if isexist == 0:

              #writer.writeheader()

             #writer.writerow({'name': request.user, 'email address': request.Email, 'project': request.ProjectName, 'initial password': request.InitialPassword,'userType': request.UserType, 'contact': request.Contact, 'businessType': request.BusinessType, 'company': request.Company,})



            return redirect('hello.html', pk=post.pk)
    else:
        form = PostForm()
    return render(request, 'registration.html', {'form': form})
更新2

尝试了很多方法后,仍然有错误,请下载

更新1

<form method={% url 'post_detail' %}" method="post"" class="post-form">{% csrf_token %}
它没有进入hello.html,所以我猜它没有运行
post\u detail
我不明白为什么url使用函数名时会通过

def post_detail(request, pk):

    post = get_object_or_404(Post, pk=pk)

    if request.method == "POST":

        form = PostForm(request.POST, instance=post)

        if form.is_valid():

            post = form.save(commit=False)

            post.author = request.user
            post.Email = request.Email

            post.ProjectName = request.ProjectName

            post.UserName = request.UserName

            post.Company = request.Company

            post.Contact = request.Contact

            post.InitialPassword = request.InitialPassword

            post.UserType = request.UserType

            post.BusinessType = request.BusinessType

            post.published_date = timezone.now()

            self.published_date = timezone.now()

            #isexist = os.path.isfile('newusers.csv') 

            #with open('/home/martin/Downloads/site1/site1/reg/newusers.csv', 'a') as csvfile:

             #fieldnames = ['name','email address','project','initial password','userType','contact','businessType','company']

            #writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

            #if isexist == false:

             #writer.writeheader()

            #writer.writerow({'name': request.user, 'email address': request.Email, 'project': request.ProjectName, 'initial password': request.InitialPassword,'userType': request.UserType, 'contact': request.Contact, 'businessType': request.BusinessType, 'company': request.Company,})


            return redirect('hello.html', pk=post.pk)

    else:
    render(request, 'hello.html', {'form': form})

        #form = PostForm(instance=post)



    return render(request, 'hello.html', {'form': form})

我关注django girl网站,感觉非常困难,希望转到/reg填写表格,然后按save按钮,然后转到web
/reg/

只需在按下保存按钮后触发一个功能

它有错误

带参数“()”和关键字的'reg/{{post.pk}}/'的相反 找不到参数“{}”。已尝试0个模式:[]

然后尝试主键pk,也得到了另一个错误

/home/martin/Downloads/site1/site1/reg/models.py:37: RemovedIndjango19警告:模型类site1.reg.models.Post不存在 声明一个显式app_标签,并且其中一个不在中的应用程序中 已安装的应用程序或其他应用程序在其应用程序启动之前已导入 加载。Django 1.9不再支持这一点。班 Post(models.Model):

我已经将
site1.reg.models.Post
添加到
MIDDLEWARE\u类
,但仍然有错误

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.sites',
)

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.security.SecurityMiddleware',
    'site1.reg.models.Post',
)

registration.html

{% block content %}

    <h1>New user registration</h1>

    <form method="POST" class="post-form">{% csrf_token %}

        {{ form.as_p }}

        <button type="submit" class="save btn btn-default" >Save</button>

    </form>

{% endblock %}

urls.py

from django.conf.urls import include, url

from . import views



urlpatterns = [

    url(r'^reg/$', views.post_new, name='post_new'),

    url(r'^reg/(?P<pk>\d+)/$', views.post_detail, name='post_detail'),

]

views.py

from .forms import PostForm

from django.shortcuts import render

from django.template.loader import get_template



def post_new(request):

    form = PostForm()

    return render(request, 'registration.html', {'form': form})



def post_detail(request, pk):

    post = get_object_or_404(Post, pk=pk)

    if request.method == "POST":

        form = PostForm(request.POST, instance=post)

        if form.is_valid():

            post = form.save(commit=False)

            post.author = request.user

            post.ProjectName = request.ProjectName

            post.UserName = request.UserName

            post.Company = request.Company

            post.Contact = request.Contact

            post.InitialPassword = request.InitialPassword

            post.UserType = request.UserType

            post.BusinessType = request.BusinessType

            post.published_date = timezone.now()

            post.save()

            return redirect('registration.html', pk=post.pk)

    else:

        form = PostForm(instance=post)


    return render(request, 'registration.html', {'form': form})

models.py

from django.db import models

from django.utils import timezone
from django.apps import AppConfig

import csv
import os.path

USERTYPE = (  
    ('Cyberport Tenant', 'Cyberport Tenant'),
    ('SmartSpace User', 'SmartSpace User'),
    ('Cyberport Incubate', 'Cyberport Incubate'),
    ('Collaboration Center Subscriber', 'Collaboration Center Subscriber'),
    ('Cyberport Alumnus', 'Cyberport Alumnus'),
    ('Technology Partner', 'Technology Partner'),
    ('HKOSUG', 'HKOSUG'),
    ('Others', 'Others'),
)


BUSINESSTYPE = (  
    ('Building', 'Building'),
    ('Data Analysis', 'Data Analysis'),
    ('Digital Entertainment', 'Digital Entertainment'),
    ('Education', 'Education'),
    ('Games', 'Games'),
    ('Gaming', 'Gaming'),
    ('ICT', 'ICT'),
    ('Marketing', 'Marketing'),
    ('Social Media', 'Social Media'),
    ('Others', 'Others'),
)


class MyAppConfig(AppConfig):
    name = 'src.my_app_label'

    def ready(self):
        post_migrate.connect(do_stuff, sender=self)


class Post(models.Model):

    author = models.ForeignKey('auth.User')

    Email = models.CharField(max_length=70)
    ProjectName = models.CharField(max_length=70)
    UserName = models.CharField(max_length=70)
    Company = models.CharField(max_length=70)
    Contact = models.CharField(max_length=70)
    InitialPassword = models.CharField(max_length=70)
    UserType = models.CharField(max_length=30, choices=USERTYPE)
    BusinessType = models.CharField(max_length=30, choices=BUSINESSTYPE)
    #UserType = models.ChoiceField(choices=USERTYPE, required=True )
    #BusinessType = models.ChoiceField(choices=BUSINESSTYPE, required=True )

    #ProjectName = models.TextField()

    created_date = models.DateTimeField(default=timezone.now)

    published_date = models.DateTimeField(blank=True, null=True)



    def publish(self):

        self.published_date = timezone.now()
        isexist = os.path.isfile('newusers.csv') 
        with open('/home/martin/Downloads/site1/site1/reg/newusers.csv', 'a') as csvfile:
          fieldnames = ['name','email address','project','initial password','userType','contact','businessType','company']
          writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
          if isexist == false:
             writer.writeheader()
          writer.writerow({'name': UserName, 'email address': Email, 'project': ProjectName, 'initial password': InitialPassword,'userType': UserType, 'contact': Contact, 'businessType': BusinessType, 'company': Company,})


        self.save()



    def __str__(self):

        return self.title

forms.py

from django import forms



from .models import Post


USERTYPE = (  
    ('Cyberport Tenant', 'Cyberport Tenant'),
    ('SmartSpace User', 'SmartSpace User'),
    ('Cyberport Incubate', 'Cyberport Incubate'),
    ('Collaboration Center Subscriber', 'Collaboration Center Subscriber'),
    ('Cyberport Alumnus', 'Cyberport Alumnus'),
    ('Technology Partner', 'Technology Partner'),
    ('HKOSUG', 'HKOSUG'),
    ('Others', 'Others'),
)


BUSINESSTYPE = (  
    ('Building', 'Building'),
    ('Data Analysis', 'Data Analysis'),
    ('Digital Entertainment', 'Digital Entertainment'),
    ('Education', 'Education'),
    ('Games', 'Games'),
    ('Gaming', 'Gaming'),
    ('ICT', 'ICT'),
    ('Marketing', 'Marketing'),
    ('Social Media', 'Social Media'),
    ('Others', 'Others'),
)



class PostForm(forms.ModelForm):



    #if form.is_valid():

     #post = form.save(commit=False)

     #post.author = request.user

     #post.published_date = timezone.now()

     #post.save()m

    class Meta:

        model = Post

        fields = ('Email', 'ProjectName', 'UserName', 'Company', 'Contact', 'InitialPassword','UserType','BusinessType')
    #fields = ('title', 'text',)
        UserType = forms.ChoiceField(choices=USERTYPE, required=True )
        BusinessType = forms.ChoiceField(choices=BUSINESSTYPE, required=True )
已安装的应用程序=(
“django.contrib.admin”,
“django.contrib.auth”,
“django.contrib.contenttypes”,
“django.contrib.sessions”,
“django.contrib.messages”,
“django.contrib.staticfiles”,
“django.contrib.sites”,
)
中间件\u类=(
“django.contrib.sessions.middleware.SessionMiddleware”,
'django.middleware.common.CommonMiddleware',
“django.middleware.csrf.CsrfViewMiddleware”,
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.xFrameOptions中间件',
'django.middleware.security.SecurityMiddleware',
'site1.reg.models.Post',
)
registration.html
{%block content%}
新用户注册
{%csrf_令牌%}
{{form.as_p}}
拯救
{%endblock%}
url.py
从django.conf.url导入包括
从…起导入视图
URL模式=[
url(r“^reg/$”,views.post\u new,name='post\u new'),
url(r'^reg/(?P\d+/$),views.post\u detail,name='post\u detail'),
]
views.py
from.forms导入PostForm
从django.shortcuts导入渲染
从django.template.loader导入get_模板
def post_新建(请求):
form=PostForm()
返回呈现(请求'registration.html',{'form':form})
def post_详细信息(请求、主键):
post=获取对象或404(post,pk=pk)
如果request.method==“POST”:
form=PostForm(request.POST,instance=POST)
如果form.is_有效():
post=form.save(commit=False)
post.author=request.user
post.ProjectName=request.ProjectName
post.UserName=request.UserName
post.Company=request.Company
post.Contact=request.Contact
post.InitialPassword=request.InitialPassword
post.UserType=request.UserType
post.BusinessType=request.BusinessType
post.published_date=时区.now()
post.save()
返回重定向('registration.html',pk=post.pk)
其他:
form=PostForm(实例=post)
返回呈现(请求'registration.html',{'form':form})
models.py
从django.db导入模型
从django.utils导入时区
从django.apps导入AppConfig
导入csv
导入操作系统路径
用户类型=(
(“数码港租户”、“数码港租户”),
(“智能空间用户”、“智能空间用户”),
(‘数码港孵化’、‘数码港孵化’),
(“协作中心订户”、“协作中心订户”),
(“数码港校友”、“数码港校友”),
(“技术合作伙伴”、“技术合作伙伴”),
(‘香港公开交易所’、‘香港公开交易所’),
(‘其他’、‘其他’),
)
业务类型=(
(‘建筑物’、‘建筑物’),
(“数据分析”、“数据分析”),
(“数字娱乐”、“数字娱乐”),
(‘教育’、‘教育’),
(‘游戏’、‘游戏’),
(“博彩”、“博彩”),
(“ICT”、“ICT”),
(“营销”、“营销”),
(“社交媒体”、“社交媒体”),
(‘其他’、‘其他’),
)
类MyAppConfig(AppConfig):
名称='src.my\u app\u label'
def就绪(自我):
post\u migrate.connect(dou stuff,sender=self)
班级职务(models.Model):
author=models.ForeignKey('auth.User'))
Email=models.CharField(最大长度=70)
ProjectName=models.CharField(最大长度=70)
用户名=models.CharField(最大长度=70)
公司=型号.CharField(最大长度=70)
触点=型号.CharField(最大长度=70)
InitialPassword=models.CharField(最大长度=70)
UserType=models.CharField(最大长度=30,选项=UserType)
BusinessType=models.CharField(最大长度=30,选项=BusinessType)
#UserType=models.ChoiceField(选项=UserType,必需=True)
#BusinessType=models.ChoiceField(选项=BusinessType,必需=True)
#ProjectName=models.TextField()
创建日期=models.DateTimeField(默认值=时区.now)
published_date=models.DateTimeField(blank=True,null=True)
def发布(自我):
self.published_date=时区.now()
isexist=os.path.isfile('newusers.csv')
将open('/home/martin/Downloads/site1/site1/reg/newusers.csv','a')作为csvfile:
FieldName=['name'、'email address'、'project'、'initial password'、'userType'、'contact'、'businessType'、'company']
writer=csv.DictWriter(csvfile,fieldnames=fieldnames)
如果isexist==false:
writer.writeheader()
作家
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.sites',
)

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.security.SecurityMiddleware',
    'site1.reg.models.Post',
)

registration.html

{% block content %}

    <h1>New user registration</h1>

    <form method="POST" class="post-form">{% csrf_token %}

        {{ form.as_p }}

        <button type="submit" class="save btn btn-default" >Save</button>

    </form>

{% endblock %}

urls.py

from django.conf.urls import include, url

from . import views



urlpatterns = [

    url(r'^reg/$', views.post_new, name='post_new'),

    url(r'^reg/(?P<pk>\d+)/$', views.post_detail, name='post_detail'),

]

views.py

from .forms import PostForm

from django.shortcuts import render

from django.template.loader import get_template



def post_new(request):

    form = PostForm()

    return render(request, 'registration.html', {'form': form})



def post_detail(request, pk):

    post = get_object_or_404(Post, pk=pk)

    if request.method == "POST":

        form = PostForm(request.POST, instance=post)

        if form.is_valid():

            post = form.save(commit=False)

            post.author = request.user

            post.ProjectName = request.ProjectName

            post.UserName = request.UserName

            post.Company = request.Company

            post.Contact = request.Contact

            post.InitialPassword = request.InitialPassword

            post.UserType = request.UserType

            post.BusinessType = request.BusinessType

            post.published_date = timezone.now()

            post.save()

            return redirect('registration.html', pk=post.pk)

    else:

        form = PostForm(instance=post)


    return render(request, 'registration.html', {'form': form})

models.py

from django.db import models

from django.utils import timezone
from django.apps import AppConfig

import csv
import os.path

USERTYPE = (  
    ('Cyberport Tenant', 'Cyberport Tenant'),
    ('SmartSpace User', 'SmartSpace User'),
    ('Cyberport Incubate', 'Cyberport Incubate'),
    ('Collaboration Center Subscriber', 'Collaboration Center Subscriber'),
    ('Cyberport Alumnus', 'Cyberport Alumnus'),
    ('Technology Partner', 'Technology Partner'),
    ('HKOSUG', 'HKOSUG'),
    ('Others', 'Others'),
)


BUSINESSTYPE = (  
    ('Building', 'Building'),
    ('Data Analysis', 'Data Analysis'),
    ('Digital Entertainment', 'Digital Entertainment'),
    ('Education', 'Education'),
    ('Games', 'Games'),
    ('Gaming', 'Gaming'),
    ('ICT', 'ICT'),
    ('Marketing', 'Marketing'),
    ('Social Media', 'Social Media'),
    ('Others', 'Others'),
)


class MyAppConfig(AppConfig):
    name = 'src.my_app_label'

    def ready(self):
        post_migrate.connect(do_stuff, sender=self)


class Post(models.Model):

    author = models.ForeignKey('auth.User')

    Email = models.CharField(max_length=70)
    ProjectName = models.CharField(max_length=70)
    UserName = models.CharField(max_length=70)
    Company = models.CharField(max_length=70)
    Contact = models.CharField(max_length=70)
    InitialPassword = models.CharField(max_length=70)
    UserType = models.CharField(max_length=30, choices=USERTYPE)
    BusinessType = models.CharField(max_length=30, choices=BUSINESSTYPE)
    #UserType = models.ChoiceField(choices=USERTYPE, required=True )
    #BusinessType = models.ChoiceField(choices=BUSINESSTYPE, required=True )

    #ProjectName = models.TextField()

    created_date = models.DateTimeField(default=timezone.now)

    published_date = models.DateTimeField(blank=True, null=True)



    def publish(self):

        self.published_date = timezone.now()
        isexist = os.path.isfile('newusers.csv') 
        with open('/home/martin/Downloads/site1/site1/reg/newusers.csv', 'a') as csvfile:
          fieldnames = ['name','email address','project','initial password','userType','contact','businessType','company']
          writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
          if isexist == false:
             writer.writeheader()
          writer.writerow({'name': UserName, 'email address': Email, 'project': ProjectName, 'initial password': InitialPassword,'userType': UserType, 'contact': Contact, 'businessType': BusinessType, 'company': Company,})


        self.save()



    def __str__(self):

        return self.title

forms.py

from django import forms



from .models import Post


USERTYPE = (  
    ('Cyberport Tenant', 'Cyberport Tenant'),
    ('SmartSpace User', 'SmartSpace User'),
    ('Cyberport Incubate', 'Cyberport Incubate'),
    ('Collaboration Center Subscriber', 'Collaboration Center Subscriber'),
    ('Cyberport Alumnus', 'Cyberport Alumnus'),
    ('Technology Partner', 'Technology Partner'),
    ('HKOSUG', 'HKOSUG'),
    ('Others', 'Others'),
)


BUSINESSTYPE = (  
    ('Building', 'Building'),
    ('Data Analysis', 'Data Analysis'),
    ('Digital Entertainment', 'Digital Entertainment'),
    ('Education', 'Education'),
    ('Games', 'Games'),
    ('Gaming', 'Gaming'),
    ('ICT', 'ICT'),
    ('Marketing', 'Marketing'),
    ('Social Media', 'Social Media'),
    ('Others', 'Others'),
)



class PostForm(forms.ModelForm):



    #if form.is_valid():

     #post = form.save(commit=False)

     #post.author = request.user

     #post.published_date = timezone.now()

     #post.save()m

    class Meta:

        model = Post

        fields = ('Email', 'ProjectName', 'UserName', 'Company', 'Contact', 'InitialPassword','UserType','BusinessType')
    #fields = ('title', 'text',)
        UserType = forms.ChoiceField(choices=USERTYPE, required=True )
        BusinessType = forms.ChoiceField(choices=BUSINESSTYPE, required=True )
<form method={% url 'post_detail' %}" method="post"" class="post-form">
<form action="{% url 'post_detail' %}" method="post"" class="post-form">
from django.conf.urls import url
from views import post_detail
urlpatterns = [
   url(r'^reg/(?P<pk>[0-9A-Za-z]+)/$',
       post_detail,
       name='post_detail'),
]
<form action="{% url 'post_detail' pk=pk %}" method="post" class="post-form">
def post_new(request):

    #post = get_object_or_404(Post)

    #form = PostForm()

    #return render_to_response(request, 'registration.html', {'pk': 12})

    #return render(request, 'registration.html', {'form': form})

    if request.method == "POST":

        form = PostForm(request.POST)

        if form.is_valid():

            post = form.save(commit=False)

            #post.author = request.user

            #post.Email = request.Email

            #post.ProjectName = request.ProjectName

            #post.UserName = request.UserName

            #post.Company = request.Company

            #post.Contact = request.Contact

            #post.InitialPassword = request.InitialPassword

            #post.UserType = request.UserType

            #post.BusinessType = request.BusinessType

            #post.published_date = timezone.now()

            #post.publish()

            #self.published_date = timezone.now()

            #return redirect('post_detail', pk=post.pk)

            isexist = os.path.isfile('/home/martin/Downloads/site1/site1/reg/newusers.csv') 

            with open('/home/martin/Downloads/site1/site1/reg/newusers.csv', 'a') as csvfile:

             fieldnames = ['name','email address','project','initial password','userType','contact','businessType','company']

             writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

             print "isexist"

             print isexist

             if isexist == 0:

              writer.writeheader()

             writer.writerow({'name': post.UserName, 'email address': post.Email, 'project': post.ProjectName, 'initial password': post.InitialPassword,'userType': post.UserType, 'contact': post.Contact, 'businessType': post.BusinessType, 'company': post.Company,})



            return render(request, 'approval.html', {'form': form})

    else:

        form = PostForm()

    return render(request, 'registration.html', {'form': form})