我刚开始学习Django,我有一个页面宽度表单,用于从用户输入数据并将其保存到数据库。我在Google上搜索过,但大多数都使用某种内置模块或类似的东西。
我创建了一个模型
class Message(models.Model):
MessageID = models.AutoField(verbose_name='Message ID',primary_key=True)
MessageSubject = models.CharField(verbose_name='Subject',max_length=255)
MessageContent = models.TextField(verbose_name='Content',)
和查看页面。
{% extends "base.html" %}
{% block Content %}
<div class="container">
<!-- Contacts -->
<div id="contacts">
<div class="row">
<!-- Alignment -->
<div class="col-sm-offset-3 col-sm-4">
<!-- Form itself -->
<form name="sentMessage" class="well" id="contactForm" novalidate>
<legend>Send Messages</legend>
<div class="control-group">
<div class="controls">
<input type="text" class="form-control"
placeholder="Subject" id="name" required
data-validation-required-message="Please enter subject" />
<p class="help-block"></p>
</div>
</div>
<div class="control-group">
<div class="controls">
<textarea rows="10" cols="100" class="form-control"
placeholder="Message" id="message" required
data-validation-required-message="Please enter your message" minlength="5"
data-validation-minlength-message="Min 5 characters"
maxlength="999" style="resize:none"></textarea>
</div>
</div>
<div class="radio">
<label>
<input type="radio" name="optionsRadios" id="optionsRadios1" value="option1" checked>
Send Sms to Selected Users
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="optionsRadios" id="optionsRadios2" value="option2">
Send Email To Selected Users
</label>
</div>
<div id="success"> </div>
<button type="submit" class="btn btn-primary btn-sm pull-right">Send</button><br />
</form>
</div>
</div>
</div>
</div>
{% endblock %}
我希望当用户将数据输入表单并单击“发送”按钮时,数据将存储在数据库表中。我正在使用sqlite数据库。
答案 0 :(得分:2)
您是否已阅读Django文档中的第一步的6个部分?如果您这样做,您可能会在&#34;编写您的第一个Django应用程序,第4部分和第34部分中找到类似的内容。 views.py中的vote函数只读取用户的输入数据并将其保存到数据库中。
顺便说一句,我发现你的代码已经出错了。
<form name="sentMessage" class="well" id="contactForm" novalidate>
您没有为action
代码提供<form>
attr,因此表单中的数据无法提交。
答案 1 :(得分:0)
如何创建view.page?你的view.py,[forms.py] ??
例如,1)我的模型CreateAccount https://github.com/evgenyivanov/form/blob/master/testingform/models.py
模板中的:
<form action="/test/" method="post" id="form">
{{form.as_p}}
<br />
<input id="submit" type="hidden" value="Send">
</form>
在url.py中
url(r'^test/', 'testingform.views.test', name='test')
在view.py
中 def test(request):
if request.method == 'POST':
form = CreateAccountForm(request.POST)
if form.is_valid():
return HttpResponse('OK')
else:
return HttpResponse(json.dumps(form.errors))
在form.py
中 class CreateAccountForm(ModelForm):
class Meta:
model = CreateAccount
有关使用表单的更多信息:http://www.pythoncentral.io/using-python-django-modelform-first-django-application/
答案 2 :(得分:0)
你不应该自己创建一个HTML表单,让Django这样做 首先在您的应用中创建一个forms.py文件:
class MessageForm(forms.ModelForm):
class Meta:
model = Message
fields = "__all__"
然后你的模板可能是这样的:
{% extends "base.html" %}
{% load staticfiles %}
{% block content %}
<form method="POST">
{% csrf_token %}
{{ form }}
<button type="submit" value="submit">Submit</button>
</form>
{% endblock content %}
观点:
def message(request, message_id):
message = get_object_or_404(Message, pk=int(message_id))
if request.method == 'POST':
form = MessageForm(request.POST, instance=message)
if form.is_valid():
form.save()
return redirect("message_list")
else:
form = MessageForm(instance=message)
context = {
"form": form,
}
return render(request, 'message.html', context)