Django使用模板显示内容
当数据模型建立完成时,接下来需要将模型里的数据展示出来,而且是通过模板这种类型进行显示
查看文章页面
通过查看article/migrations/0001_initial.py可得出,表格中有"id","title","content"
from django.http import HttpResponse          # 引用 HttpResponse 方法
def article_detail(request,article_id):         # 创建文章明细处理方法
  return HttpResponse("文章id: %s" % article_id)
from article.views import article_detail        # 引用article APP中的views试图中的article_detial方法名
  path("article/<int:article_id>", article_detail, name="article_detail"),
- 通过访问http://127.0.0.1:8000/article/1 页面返回: 文章id: 1
- 通过访问http://127.0.0.1:8000/article/2 页面返回: 文章id: 2
应用模型
Article.objects.get(条件)
Article.objects.all()
Article.objects.filter(条件)
article/views.py
from .models import Article
def article_detail(request, article_id):
    article = Article.objects.get(id=article_id)
    return HttpResponse("文章的标题", article.title)     # 获取模型数据中的数据
- 通过访问http://127.0.0.1:8000/article/1 页面返回: 文章的标题: one
- 通过访问http://127.0.0.1:8000/article/2 页面返回: 文章的标题: two
- 通过访问http://127.0.0.1:8000/article/4 页面返回: DoesNotExist 异常
通过编写article/views.py
from .models import Article
def article_detail(request, article_id):
    try:
        article = Article.objects.get(id=article_id)
    except Article.DoesNotExist:
        return HttpResponse("不存在")                    # 返回不存在
    return HttpResponse("文章的标题", article.title)     # 获取模型数据中的数据
或者
通过编写article/views.py
from .models import Article
from django.http import Http404                            # 引用 Http404 方法
def article_detail(request, article_id):
    try:
        article = Article.objects.get(id=article_id)
    except Article.DoesNotExist:
        raise Http404("not exist")                         # 通过引用Http404方法抛出异常提示
    return HttpResponse("文章的标题", article.title)     # 获取模型数据中的数据
引用模板文件
mkdir article/templates
from django.shortcuts import render
from django.http import Http404                            # 引用 Http404 方法
from .models import Article
def article_detail(request,article_id):                     # 创建文章明细处理方法
    try:
        article = Article.objects.get(id=article_id)
        context = {}                                            # 定义字典
        context['article_obj'] = article                        # article_obj 在html中引用
        return render(request, "article_detail.html", context)  #
    except Article.DoesNotExist:
        # return HttpResponse("不存在")                      # 返回不存在
        raise Http404("not exist")                         # 通过引用Http404方法抛出异常提示
<html>
<body>
    <h2>  {{article_obj.title}}  </h2>
    <hr>
    <p>  {{article_obj.content}}  </p>
</body>
</html>
- 通过访问http://127.0.0.1:8000/article/1 页面返回:
from django.shortcuts import render, get_object_or_404
from .models import Article
# Create your views here.
def article_detail(request,article_id):                     # 创建文章明细处理方法
    article = get_object_or_404(Article, pk=article_id)
    context = {}                                        # 定义字典
    context['article_obj'] = article
    return render(request, "article_detail.html", context)
- 通过访问http://127.0.0.1:8000/article/4 页面返回:
获取文章列表
from django.shortcuts import render_to_response            # 引用 render_to_response 方法
def article_list(request):
    article = Article.objects.all()
    context = {}
    context['articles'] = articles
    return render_to_response("article_list.html", context)
<html>
<body>
    {{ articles }}
</body>
</html>
from article.views import article_list                       # 引用article_list
path('article/', article_list, name="article_list")         # 增加
- 通过访问http://127.0.0.1:8000/article/ 页面返回:
<html>
<body>
    {% for article in articles %}
        <a href="/article/{{ article.pk }}">{{ article.title }}</a>        <!--引用views.py中的pk,参考 "article = get_object_or_404(Article, pk=article_id)"-->
    {% endfor%}
</body>
</html>
- 通过访问http://127.0.0.1:8000/article/ 页面返回:
- 点击 one
- 获取文章列表处理成功
总urls包含app的urls
from django.urls import path
from . import views
urlpatterns = [
    # localhost:8000/article/
    path('' , views.article_list , name="article_list") ,
    # localhost:8000/article/1
    path("<int:article_id>" , views.article_detail , name="article_detail") ,
]
from django.contrib import admin
from django.urls import path
from . import views
from django.urls import include                     # 使用include库
urlpatterns = [
    path('admin/', admin.site.urls),
    path("", views.index),
    path("article/", include("article.urls"))       # 引用APP中的urls路由
]
- 测试正常
