views.py 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. from django.shortcuts import render, redirect
  2. from django.http import HttpResponse
  3. from .models import ArticlePost
  4. from .form import ArticlePostForm
  5. from django.contrib.auth.models import User
  6. import markdown
  7. # 视图函数
  8. def article_list(request):
  9. articles = ArticlePost.objects.all()
  10. context = {'articles': articles}
  11. return render(request, 'article/list.html', context)
  12. def article_detail(request, id):
  13. articles = ArticlePost.objects.get(id=id)
  14. articles.body = markdown.markdown(articles.body,
  15. extensions=[
  16. 'markdown.extensions.extra',
  17. 'markdown.extensions.codehilite',
  18. ])
  19. context = {'article': articles}
  20. return render(request, 'article/detail.html', context)
  21. def article_create(request):
  22. if request.method == 'POST':
  23. article_post_form = ArticlePostForm(data=request.POST)
  24. # 判断提交的数据是否满足模型要求
  25. if article_post_form.is_valid():
  26. # 保存数据,但是暂时不提交到数据库中
  27. new_article = article_post_form.save(commit=False)
  28. new_article.author = User.objects.get(id=1)
  29. # 将新文章保存到数据库中
  30. new_article.save()
  31. return redirect("article:article_list")
  32. # 如果数据不合法,返回错误信息
  33. else:
  34. return HttpResponse("表单有错误,请重新填写")
  35. # 如果用户请求获取数据
  36. else:
  37. # 创建表单类实例
  38. article_post_form = ArticlePostForm()
  39. context = {'article_post_form': article_post_form}
  40. # 返回模板
  41. return render(request, 'article/create.html', context)
  42. def article_delete(request, id):
  43. article = ArticlePost.objects.get(id=id)
  44. article.delete()
  45. return redirect("article:article_list")
  46. def article_safe_delete(request, id):
  47. if request.method == 'POST':
  48. article = ArticlePost.objects.get(id=id)
  49. article.delete()
  50. return redirect("article:article_list")
  51. else:
  52. return HttpResponse("仅允许POST请求")
  53. def article_update(request, id):
  54. article = ArticlePost.objects.get(id=id)
  55. if request.method == 'POST':
  56. article_post_form = ArticlePostForm(data=request.POST)
  57. if article_post_form.is_valid():
  58. article.title = request.POST['title']
  59. article.body = request.POST['body']
  60. article.save()
  61. return redirect("article:article_detail", id=id)
  62. else:
  63. return HttpResponse("表单内容有误,请重新填写")
  64. else:
  65. article_post_form = ArticlePostForm()
  66. context = {'article': article, 'article_post_form': article_post_form}
  67. return render(request, 'article/update.html', context)