Django 学习笔记

页面跳转

2018-03-25  本文已影响5人  一块大番薯

按照执行顺序排下来

点击超链接

{%for post in post_list %}
<article class="post post-1">
   <header class="entry-header">
      <h1 class="entry-title">
        <a href="{{ post.make_post_url }}">{{ post.title }}</a>
      </h1>
   </header>
</article>
{% endfor %}

构造 URL

post 对象调用了构造 URL 的方法 make_post_url
该方法的定义在 Post 模型中。
reverse 函数根据视图来找到 URL 模式,再传入参数构造 URL。

app\models.py
from django.urls import reverse
class Post(models.Model):
    def make_post_url(self):
        return reverse('app:post', kwargs={'pk': self.pk})

app\urls.py
app_name = 'app'
urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^post/(?P<pk>\d+)/$', views.post, name='post')
]

调用视图函数

模板在模型那里构造好 URL 后,就去 urls.py 中匹配到相应的视图。
url(r'^post/(?P<pk>\d+)/$', views.post, name='post')

渲染出新模板

在 views.py 中渲染出新的模板。

def post(request, pk):
    post = get_object_or_404(Post, pk=pk)
    return render(request, 'app/post.html', context={'post': post})
上一篇 下一篇

猜你喜欢

热点阅读