【发布时间】:2018-01-30 06:38:31
【问题描述】:
我在模板中创建了一个表单以在数据库中插入数据,但表单无法正常工作。当我提交表单时,什么也没发生。请检查我的所有代码并给我一些建议。
add.html 模板文件:
<h2>Add Article</h2>
<form action="" method="post">
{% csrf_token %}
<label>Title</label>
<input type="text" name="title"
placeholder="Enter Title">
<label>Category</label>
<select name="cate">
<option value="">Select Category</option>
{% for cat in get %}
<option value="{{ cat.cate }}">{{ cat.cate }}
</option>
{% endfor %}
</option>
</select>
<label>Discription</label>
<textarea name="desc" rows="15">
</textarea>
<input type="submit" value="submit" class="btn btn-default">
</form>
我创建了 2 个视图。在第一个视图中,我渲染了添加到表单选择菜单中的所有类别,第二个视图用于处理表单
views.py
from django.shortcuts import render, redirect
from .models import article, category
def get_category(request):
get = category.objects.all()
context = {
'get':get
}
return render(request, 'blog/add.html', context)
def add(request):
if request.method == 'POST':
title = request.POST['title']
cate = request.POST['cat']
desc = request.POST['desc']
art = article(title=title, disc=desc, cat=cate)
art.save()
return redirect('blog/index.html')
else:
return render(request, 'blog/add.html')
Models.py
from django.db import models
class category(models.Model):
cate = models.CharField(max_length=100)
def __str__(self):
return self.cate
class article(models.Model):
title = models.CharField(max_length=250)
disc = models.TextField()
cat = models.ForeignKey(category, verbose_name="Category")
posted = models.DateTimeField(auto_now_add=True, editable=False)
updated = models.DateTimeField(auto_now=True)
def __str__(self):
return self.title
urls.py
from django.conf.urls import url
from .import views
app_name = 'blog'
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^add/$', views.get_category, name='category'),
url(r'^add/$', views.add, name='add'),
]
【问题讨论】:
-
请修复代码中的缩进问题。
-
@habib 您的问题已得到解答,此外,请使用
django forms。文档:docs.djangoproject.com/en/1.11/topics/forms