这实际上是我正在处理的一个类的任务。我为django中的文档上传和注册创建了模型,视图和表单类。我一直在咨询不同的教程并尝试不同的技术,这就是为什么我的代码中可能有不同的方法。原谅我的新手提醒。Django文档上传表单在浏览器中不显示
- 第一个问题:注册表单不提交给表(Users)。我从管理端添加了用户,并且完全登录。
Model.py
class Users(models.Model):
id = models.AutoField(primary_key=True, unique=True)
title = models.CharField(max_length='10')
surname = models.CharField(max_length='50')
firstname = models.CharField(max_length='50')
username = models.CharField(max_length='50')
password = models.CharField(max_length='50')
email = models.EmailField(max_length='50')
phone = models.BigIntegerField(max_length='12')
city = models.CharField(max_length='50')
country = models.CharField(max_length='50')
usertype = models.CharField(max_length=13)
Form.py
class RegisterForm(forms.Form):
#define fields for form
title = forms.CharField(max_length='10')
surname = forms.CharField(max_length='10')
firstname = forms.CharField(max_length='10')
username = forms.CharField(max_length='50')
password = forms.PasswordInput()
email = forms.EmailField(required=True)
phone = forms.CharField(max_length='15')
city = forms.CharField(max_length='50')
country = forms.CharField(max_length='20')
userlevel = (
(u'Client', 'Client'),
(u'Proof Reader', 'Proof Reader'),
(u'Admin', 'Admin'),
)
usertype = forms.ModelChoiceField(widget=forms.Select, queryset=userlevel)
class Meta:
model = Users
fields = ('username', 'email', 'password', 'password2')
def save(self, commit=True):
Users = super(RegisterForm, self).save(commit=False)
Users.title = self.cleaned_data['title']
Users.surname = self.cleaned_data['surname']
Users.firstname = self.cleaned_data['firstname']
Users.username = self.cleaned_data['username']
Users.password = self.cleaned_data['password']
Users.email = self.cleaned_data['email']
Users.phone = self.cleaned_data['phone']
Users.city = self.cleaned_data['city']
Users.country = self.cleaned_data['country']
Users.usertype = self.cleaned_data['usertype']
if commit:
Users.save()
return Users
def clean_username(self):
username = self.cleaned_data['username']
try:
User.objects.get(username=username)
except User.DoesNotExist:
return username
raise forms.ValidationError("That username is already taken, please select another.")
View.py
def register(request):
#model = Users
#check the request object if there is a method post for a form action
if request.method == 'POST':
#handle the form if method is found to be post
#create a form object
form = RegisterForm(request.POST)
context = {'form': RegisterForm}
#check if form is valid
if form.is_valid():
#save form
Users.title = form.cleaned_data['title']
Users.surname = form.cleaned_data['surname']
Users.firstname = form.cleaned_data['firstname']
Users.username = form.cleaned_data['username']
Users.password = form.cleaned_data['password']
Users.email = form.cleaned_data['email']
Users.phone = form.cleaned_data['phone']
Users.city = form.cleaned_data['city']
Users.country = form.cleaned_data['country']
Users.usertype = form.cleaned_data['usertype']
#redirect to success page
return HttpResponseRedirect('register_success')
else:
form = RegisterForm()
#create arguments to check against CSRF attacks
args = {}
args.update(csrf(request))
args['form'] = RegisterForm()
return render_to_response('register.html', args)
def auth_view(request):
username = request.POST.get('username', '')
password = request.POST.get('password', '')
user = auth.authenticate(username=username, password=password)
if user is not None:
auth.login(request, user)
return HttpResponseRedirect('welcome')
else:
return HttpResponseRedirect('invalid')
#return render_to_response('auth_view.html')
模板文件 - register.html
{% extends "main.html" %}
{% block title %}Register{% endblock %}
{% block content %}
<h2>Register</h2>
<form action="" method="post"> {% csrf_token %}
<table> {{ form }} </table>
<input type="submit" value="Register">
</form>
{% endblock %}
- 表格文件的上传也没有显示。我不知道为什么会发生这种情况。
Models.py
class document(models.Model):
id = models.AutoField(primary_key=True, unique=True)
file = models.FileField(upload_to=get_upload_file_name)
statusid = models.ForeignKey('status')
userID = models.ForeignKey('Users')
#feedback = models.TextField(blank=True)
time = models.DateTimeField()
completion_time = models.DateTimeField(blank=True)
choice = ((u'Audio', 'Audio'), (u'Text', 'Text'))
filetype = models.CharField(max_length='50')
views.py
def uploaddocs(request):
if request.method == 'POST':
form = DocumentForm(request.POST, request.FILES)
context = {'form': DocumentForm}
if form.is_valid():
form.upload()
return HttpResponseRedirect('upload_success')
args = {}
args.update(csrf(request))
args['forms'] = DocumentForm()
return render_to_response('uploaddocs.html', args)
forms.py
class DocumentForm(forms.Form):
#define fields for form
model = document
file = forms.FileField()
statusid = forms.CharField(max_length='10')
userID = forms.CharField(max_length='10')
#feedback = models.TextField(blank=True)
time = forms.DateTimeField()
completion_time = forms.DateTimeField()
choice = ((u'Audio', 'Audio'), (u'Text', 'Text'))
filetype = forms.ChoiceField(choices=choice)
def upload(self, commit=True):
document = DocumentForm.save(commit=False)
document.statusid = self.cleaned_data['statusid']
document.time = self.cleaned_data['time']
document.completion_time = self.cleaned_data['completion_time']
document.filetype = self.cleaned_data['filetype']
if commit:
document.upload()
return document
我知道这似乎是整个任务,但相信我,这只是我未来许多错误的开始。感谢您的回复。
谢谢兄弟...文档上传页面现在显示...但我仍然有问题与注册表单提交到'用户'表。感谢您的帮助...赞赏它 – thurpe