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路由
]
- 测试正常