我在模板中创建了一个表单,用于在数据库中插入数据,但表单不起作用。当我提交表单时没有任何反应。请查看我的所有代码,并给我一些建议。
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'),
]
答案 0 :(得分:1)
在你的情况下,每次动作都会转到get_category,因为django会找到第一个匹配的网址并将其用于操作。
您可以为您的案例创建一个功能: 在views.py
中urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^add/$', views.get_category, name='category'),
# !! comment or remove last urls
# url(r'^add/$', views.add, name='add'),
]
在urls.py中
ng build --prod --output-hashing none
我进行了编辑,但如果您使用django forms查看和重建逻辑,那就更好了。
答案 1 :(得分:1)
<input type="submit" class="btn btn-primary" value="Add item">
添加一个Submit按钮而不是type ='button'
答案 2 :(得分:0)
如果POST方法不起作用,请重新配置项目(进行迁移和迁移)
答案 3 :(得分:0)
更改:
return redirect('blog/index.html')
收件人:
return redirect('index')
“索引”是views.py文件中视图函数的名称属性。