Mac最新版Django2.x简易上手博客搭建笔记(三)2020-01-23

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>

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

image
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容