Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。
① 详情页
如果在url 定义了参数, 视图函数也要定义相应的参数
news = News.objects.select_related('category', 'author').get(pk=news_id)
② 自定义登录验证装饰器
functools.wraps 函数, Django实战-信息资讯-Ajax 实现注册 有 restful 的用法。
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 表单
@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())