1.2添加新条目
1.2.1用于添加新条目的表单
forms.py
from .models import Topic,Entry
class EntryForm(forms.ModelForm):
class Meta:
model = Entry
fields=['text']
lables={'text':''}
widgets={'text': forms.Textarea(attrs={'cols':40})}
1.2.2URL模式new_entry
urls.py
re_path('new_entry/(?P<topic_id>\d+)/$', views.new_entry, name='new_entry'),
1.2.3 视图模式new_entry()
views.py
from .forms import TopicForm,EntryForm
def new_entry(request,topic_id):
"""在特定主题下添加条目"""
topic = Topic.objects.get(id=topic_id)
if request.method != 'POST':
#未提交数据:创建一个新表单
form=EntryForm()
else:
#POST提交的数据,对数据进行处理
form = EntryForm(data=request.POST)
if form.is_valid():
form.save()
new_entry=form.save(commit=False)
new_entry.topic = topic
new_entry.save()
#这里不一样哦!!!!
# return HttpResponseRedirect(reverse('users:topic', args=[topic.id]))
return HttpResponseRedirect(reverse('users:topic', kwargs=dict(topic_id=topic.id)))
context={'topic':topic,'form':form}
return render(request,'new_entry.html',context)
1.2.4模板new_entry.html
new_entry.html
{% extends "base.html" %}
{% block content %}
<p><a href= "{% url 'users:topic' topic.id %}">{{ topic }}</a></p>
{# topic.id 而不是topic_id #}
<p>Add a new Entry:</p>
<form action= "{% url 'users:new_entry' topic.id %}" method ='post'>
{% csrf_token %}
{{ form.as_p }}
<button name="submit">add entry</button>
</form>
{% endblock content %}
1.2.5链接到页面new_entry
topic.html
<p>Entries:</p>
<p>
<a href="{% url 'users:new_entry' topic.id %}">add new entry</a>
</p>

欢迎关注我的微信公众号~立志做一个有智慧,财富自由的程序媛

网友评论