Python ';WSGIRequest&x27;对象没有属性';电子邮件';
更新3 在再次阅读教程后,我通过在下面添加更多代码解决了这个问题 ,但在按下按钮后出现错误“WSGIRequest”对象没有属性“Email” 按保存按钮后,链接没有查询字符串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})
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})