django - Django 无法获取注册表以发布到 admin.py 中的数据库
问题描述
您好我正在尝试将我的 ModelForm 发布到我的数据库中,以便查看用户是否实际在我的数据库中注册,注册视图称为 (Registernow)。实际的数据库显示在 admin.py 中,但是当我在我的 Django 中输入信息制作 ModelForm 时,它不会 POST 到数据库,因此我在 admin.py 中的 ModelForm 下看不到任何注册用户,你能帮帮我吗?
VIEWS.PY
from django.shortcuts import render
from App1 import forms
from App1.forms import LogInForm, SignedUpForm
from django.contrib.auth import authenticate, login, logout
from django.http import HttpResponse, HttpResponseRedirect
from django.urls import reverse
from django.contrib.auth.decorators import login_required
from django.template import RequestContext
# Create your views here.
def index(request):
form = LogInForm()
if request.method == 'POST':
emailview = request.POST.get('email')
passwordview = request.POST.get('password')
varauth = authenticate(username=emailview, password=passwordview)
if varauth:
if varauth.is_active:
login(request, varauth)
request.varauth
return HttpResponseRedirect(reverse('index'))
else:
return HttpResponse("Account Not Active")
else:
print("Someone tried to log in and failed")
print('Username: {}\nPassword: {} '.format(emailview, passwordview))
return render(request, 'App1/index.html', {'form': form})
@login_required
def special(request):
return HttpResponse("YOU ARE LOGGED IN")
@login_required
def activeuserlogout(request):
logout(request)
return HttpResponseRedirect(reverse('index'))
def terms_and_conditions(request):
return render(request, 'App1/termsandconditions.html')
# LAST EDITED CHANGE IN THE POST GET PARAMETER
def Registernow(request):
form2 = SignedUpForm()
if request.method == 'POST':
form2 = SignedUpForm(request.POST)
if form2.is_valid():
instance = form2.save(commit=False)
else:
form2 = SignedUpForm()
HttpResponseRedirect(reverse('index'))
return render(request, 'App1/register_now.html', {'form2' : form2})
def main_face(request):
return render(request, 'App1/mainface.html')
END VIEWS.PY
*********************************************************************
FORMS.PY
from django import forms
from django.forms import ModelForm
from App1.models import LogInModel, SignedUpModel
# LOG IN MODELFORM
class LogInForm(ModelForm):
email = forms.EmailField(label='', widget=forms.EmailInput(attrs=
{'placeholder': 'example@gmail.com'}))
password = forms.CharField(label='', widget=forms.PasswordInput(attrs=
{'placeholder': 'password'}))
class Meta:
model = LogInModel
fields = {'email', 'password',}
class Media:
css = {
'__all__': 'style_sheet_signin.css'
}
# END MODELFORM
class SignedUpForm(ModelForm):
name = forms.CharField(label='Name', widget=forms.TextInput(attrs=
{'placeholder' : 'First Name'}))
lastname = forms.CharField(label='Last Name', widget=forms.TextInput(attrs=
{'placeholder' : 'Last Name'}))
email2 = forms.EmailField(label='Email', widget=forms.EmailInput(attrs=
{'placeholder' : 'example34@gmail.com'}))
password2 = forms.CharField(label='Password', widget=forms.PasswordInput(attrs=
{'placeholder' : 'Password'}))
passconf = forms.CharField(label='Confirm Password', widget=forms.PasswordInput(attrs=
{'placeholder' : 'Confirm'}))
phone_num = forms.IntegerField(label='Phone Number', widget=forms.TextInput(attrs=
{'placeholder' : 'eg. 5196329087'}))
class Meta:
model = SignedUpModel
fields = {'name', 'lastname',
'email2', 'password2', 'passconf', 'phone_num',}
class Media:
css = {
'__all__': ('registrationbonky.css')
}
# END MODELFORM
END FORMS.PY
******************************************************************
MODELS.PY
from django.db import models
# LOGIN MODEL AND MODELFORM HERE
class LogInModel(models.Model):
email = models.EmailField()
password = models.CharField(max_length=256)
# END MODEL
# SIGNIN IN MODEL
class SignedUpModel(models.Model):
name = models.CharField(max_length=256)
lastname = models.CharField(max_length=256)
email2 = models.EmailField()
password2 = models.CharField(max_length=256)
passconf = models.CharField(max_length=256)
phone_num = models.CharField(max_length=20)
# END MODEL
END MODELS.PY
*******************************************************************
HTML REGISTRATION PAGE FORM
<form class="" action="{% url 'App1:index' %}" method="POST">
<h3 id='rege'>REGISTRATION</h3>
<br>
{% csrf_token %}
{{form2.as_table}}
<br>
<input id='regebtn' type="submit" name="" value="REGISTER">
</form>
***************************************************************
***************************************************************
解决方案
据我所知,您尚未在模型表单实例上提交保存。
如果您想将自定义数据添加到您的实例,这是有道理的,但您以后没有使用过您的实例,也没有保存它。因此,当 RegisterForm 发布到服务器时,它不会保留在数据库中。
这样的事情会做:
def Registernow(request):
form2 = SignedUpForm()
if request.method == 'POST':
form2 = SignedUpForm(request.POST)
if form2.is_valid():
instance = form2.save(commit=True)
...
推荐阅读
- javascript - Uncaught SyntaxError: Unexpeted token ':'
- android - MissingPluginException(在通道 dexterous.com/flutter/local_notifications 上找不到方法初始化的实现)
- python - ImportError:无法从“TSE_Datareader”(TSE_Datareader.ipynb)导入名称“getInsCode”
- flutter - 如何使用颤振从 Truecaller 中检索详细信息?
- python - aiohttp - 错误:400,消息='标头中的无效字符'
- typescript - 为什么 Typescript 说这个变量是“在它自己的初始化程序中直接或间接引用的”?
- azure - Cosmos graph gremlin nodejs - 未处理的承诺拒绝
- reactjs - 重定向不重定向到主页,而是重定向到使用 redux 的设置页面
- sql-server - SQL 从表中查找 Peak Hour 和 Peak off Hour
- r - 如何通过 R 中的多个组计算条件熵 ..我哪里出错了