from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def article_detail(request, article_id):
return HttpResponse("文章id: %s" % article_id)
from django.contrib import admin
from django.urls import path
# 导入views
from . import views
# 导入应用里的views里面的article_detail方法
from article.views import article_detail
urlpatterns = [
......
# 文章链接
# <>里的变量名称要和article_detail定义的变量名称一致
# 默认变量是str类型, 设置变量为int类型
# name为别名
path('article/' , article_detail, name="article_detail"),
]
Article的views.py
from django.shortcuts import render
from django.http import HttpResponse, Http404
# 应用模型
from .models import Article
# 通过一个处理方法, 响应不同文章链接
# Create your views here.
def article_detail(request, article_id):
try:
# 通过文章id获取文章信息
article = Article.objects.get(id=article_id)
except Article.DoesNotExist:
# 返回404
raise Http404("not exist")
# 返回文章标题和内容
#
表示换行
# 标题标签
return HttpResponse("文章标题: %s
文章内容: %s"
%(article.title, article.content))
返回数据前端和后端的数据在一起, 不方便维护
TEMPLATES = [
{
# 指定用什么模板系统
'BACKEND': 'django.template.backends.django.DjangoTemplates',
# 自己指定目录
'DIRS': [],
# APP里面的模板文件夹是有效的, 也就是应用里面的template文件可以读取的到
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
from django.shortcuts import render
from django.http import HttpResponse, Http404
# 应用模型
from .models import Article
# 通过一个处理方法, 响应不同文章链接
# Create your views here.
def article_detail(request, article_id):
try:
# 通过文章id获取文章信息
article = Article.objects.get(id=article_id)
# render会产生一个response响应给前端页面
# render需要三个参数
# 第一个是 request
# 第二个是 模板页面地址
# 第三个是 上传的参数,是一个字典
context = {
}
context["article"] = article
return render(request, "article_detail.html", context)
except Article.DoesNotExist:
# 返回404
raise Http404("not exist")
<html>
<head>
</head>
<body>
<h2>{
{
article.title}}</h2>
<p>{
{
article.content}}</p>
</body>
</html>
from django.shortcuts import render, get_object_or_404
# 应用模型
from .models import Article
# 通过一个处理方法, 响应不同文章链接
# Create your views here.
def article_detail(request, article_id):
# 通过文章id获取文章信息
# article = Article.objects.get(id=article_id)
# 简化404写法, get_object_or_404有两个参数, 第一个是模型
# 第二个是条件, 主键可以用pk代替
article = get_object_or_404(Article, pk=article_id)
# render会产生一个response响应给前端页面
# render需要三个参数
# 第一个是 request
# 第二个是 模板页面地址
# 第三个是 上传的参数,是一个字典
context = {
}
context['article'] = article
return render(request, "article_detail.html", context)
views.py
from django.shortcuts import render, get_object_or_404
# 应用模型
from .models import Article
.......
# 文章列表
def article_list(request):
article = Article.objects.all()
context = {
}
context['article'] = article
return render(request, "article_list.html", context)
<html>
<head>
head>
<body>
{% for article in articles %}
<a href="{% url 'article_detail' article.pk %}">{
{ article.title }}a>
{% endfor %}
body>
html>
from django.urls import path
# 导入views
from . import views
urlpatterns = [
# 文章链接
# <>里的变量名称要和article_detail定义的变量名称一致
# 默认变量是str类型, 设置变量为int类型
# name为别名
path('' , views.article_detail, name="article_detail"),
# 文章列表
path('', views.article_list, name="article_list"),
]
from django.contrib import admin
from django.urls import include, path
# 导入views
from . import views
urlpatterns = [
# Django的后台管理地址
path('admin/', admin.site.urls),
# path方法有三个参数, 我们这里用到两个参数
# 第一个参数是访问网址的根目录, ''表示所有路径都可以访问
# 比如, 直接www.baidu.com
# 第二个参数规定是如何处理请求, 返回什么给客户端
# views.index是处理请求的方法
path('', views.index),
path('article/', include('article.urls')),
]
总路由器里面设置的是
path('article/', include('article.uls'))
所以子路由里面设置路径的时候, 需要减去 article 这一级目录