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':
#未提交數(shù)據(jù):創(chuàng)建一個(gè)新表單
form=EntryForm()
else:
#POST提交的數(shù)據(jù),對數(shù)據(jù)進(jìn)行處理
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>

歡迎關(guān)注我的微信公眾號(hào)~立志做一個(gè)有智慧,財(cái)富自由的程序媛

image