前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django实战-信息资讯-详情页与评论

Django实战-信息资讯-详情页与评论

作者头像
小团子
发布2019-07-18 16:13:38
5400
发布2019-07-18 16:13:38
举报
文章被收录于专栏:数据云团数据云团

Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。

① 详情页

如果在url 定义了参数, 视图函数也要定义相应的参数

代码语言:javascript
复制
news = News.objects.select_related('category', 'author').get(pk=news_id)
  • select_related 主要针一对一和多对一关系进行优化。
  • select_related 使用SQL的JOIN语句进行优化,通过减少SQL查询的次数来进行优化、提高性能。
  • 可以通过可变长参数指定需要 select_related 的字段名。也可以通过使用双下划线“__”连接字段名来实现指定的递归查询。没有指定的字段不会缓存,没有指定的深度不会缓存,如果要访问的话 Django 会再次进行SQL查询。
  • 也可以通过 depth 参数指定递归的深度,Django 会自动缓存指定深度内所有的字段。如果要访问指定深度外的字段,Django 会再次进行SQL查询。
  • 也接受无参数的调用,Django 会尽可能深的递归查询所有的字段。但注意有Django 递归的限制和性能的浪费。

② 自定义登录验证装饰器

functools.wraps 函数, Django实战-信息资讯-Ajax 实现注册 有 restful 的用法。

代码语言:javascript
复制
def xfz_login_required(func):
    def wrapper(request, *args, **kwargs):
        if request.user.is_authenticated:
            return func(request, *args, **kwargs)
        else:
            if request.is_ajax():
                return restful.unauth(message='请先登录!')
            else:
                return redirect('/')
    return wrapper

③ 评论

comment 序列化

comment 表单

代码语言:javascript
复制
@require_POST
@xfz_login_required
def add_comment(request):
    # from django.shortcuts import redirect
    form = AddCommentForm(request.POST)
    if form.is_valid():
        content = form.cleaned_data.get('content')
        news_id = form.cleaned_data.get('news_id')
        news = News.objects.get(pk=news_id)
        comment = Conment.objects.create(content=content, news=news, author=request.user)
        # 将 comment 序列化
        serialize = CommentSerializer(comment)
        return restful.result(data=serialize.data)
    else:
        return restful.params_error(message=form.get_error())
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档