Django开发--step3 博客视图

2024-01-10 01:58

本文主要是介绍Django开发--step3 博客视图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

django作为web开发框架,接收浏览器发来的http请求,返回响应的http响应

一、绑定URL与视图函数

在django中,当用户访问不同的网址时,Django把不同的网址对应的处理函数写在一个urls.py文件中,当用户访问某个网址时,django就会去这个文件中找,如果找到这个网址,就会调用和它绑在一起的处理函数(叫做视图函数)

具体做法:

在blogapp下创建一个urls.py文件,与blog下的urls.py不同


from django.conf.urls import url  # 导入url函数from . import views   # 引入视图函数urlpatterns = [url(r'^$', views.index, name='index'),  # 参数:网址 视图函数名 视图函数的别名
]

在views中编写视图函数

from django.http import HttpResponsedef index(request):return HttpResponse("欢迎访问我的博客首页!")

它首先接受了一个名为 request 的参数,这个 request就是 Django 为我们封装好的 HTTP 请求,它是类 HttpRequest 的一个实例。然后我们便直接返回了一个 HTTP 响应给用户,这个 HTTP 响应也是 Django 帮我们封装好的,它是类 HttpResponse 的一个实例,只是我们给它传了一个自定义的字符串参数。

浏览器接收到这个响应后就会在页面上显示出我们传递的内容 :欢迎访问我的博客首页!

最后需要配置项目URL,

将blogapp下的url文件包含到settings.py文件所在的urls.py文件下

- from django.conf.urls import url
+ from django.conf.urls import url, include
from django.contrib import adminurlpatterns = [url(r'^admin/', admin.site.urls),
+   url(r'', include('blog.urls')),
]#  -代表删去  +代表添加

当我们访问127.0.0.1:8000就会显示上面显示的字符串。

 

二、使用Django的模板系统

在项目根目录下新建一个名为templates的文件夹,用来存放我们的模板,再在这个templates下新建一个名为blog的文件夹,新建一个index.html文件

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>{{ title }}</title>   
</head>
<body>
<h1>{{ welcome }}</h1>
</body>
</html>

根据Django规定的语法中,{{ }} 中包含的是模板变量

在到settings中修改TEMPLATES选项,在DIRS中写入os.path.join(BASE_DIR, 'templates')

这样,我们的视图函数,就可以修改为

from django.http import HttpResponse
from django.shortcuts import renderdef index(request):return render(request, 'blog/index.html', context={'title': '我的博客首页', 'welcome': '欢迎访问我的博客首页'})

 

 

三、静态文件的引入

在django的html页面中引入静态文件,我们首先在blogapp下建立一个static文件夹,再在static下新建blog/css 和 blog/js文件夹

在引入时,就可以写成

 <script src="{% static 'blog/js/jquery-2.1.3.min.js' %}"></script>
<link rel="stylesheet" href="{% static 'blog/css/bootstrap.min.css' %}">

对于外部文件,不需模板标签:

<link rel="stylesheet" href="http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">

为了能在模板中使用 {% static %} 模板标签,别忘了在最顶部 {% load staticfiles %} 。static 模板标签位于 staticfiles 模块中,只有通过 load 模板标签将该模块引入后,才能在模板中使用 {% static %} 标签。

 

在模板标签当中使用for循环遍历

{% for post in post_list %}<article class="post post-{{ post.pk }}">...</article>
{% empty %}  // 如果post_list为空就显示empty下的内容<div class="no-post">暂时还没有发布的文章!</div>
{% endfor %}

post_list 是一个 QuerySet(类似于一个列表的数据结构),其中每一项都是之前定义在 blog\models.py 中的 Post 类的实例,且每个实例分别对应着数据库中每篇文章的记录。因此我们循环遍历 post_list ,每一次遍历的结果都保存在 post 变量里。所以我们使用模板变量来显示 post 的属性值。例如这里的 {{ post.pk }}(pk 是 primary key 的缩写,即 post 对应于数据库中记录的 id 值,该属性尽管我们没有显示定义,但是 Django 会自动为我们添加

 


四、在后台发布文章进行测试

在后台注册我们自己创建的模型,在admin.py下

from django.contrib import admin
from .models import Post, Category, Tagclass PostAdmin(admin.ModelAdmin):  # 订制列表显示情况list_display = ['title', 'created_time', 'modified_time', 'category', 'author']# 把新增的 PostAdmin 也注册进来
admin.site.register(Post, PostAdmin)
admin.site.register(Category)
admin.site.register(Tag)

访问 http://127.0.0.1:8000/admin/ 

这篇关于Django开发--step3 博客视图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/589168

相关文章

Python+wxPython开发一个文件属性比对工具

《Python+wxPython开发一个文件属性比对工具》在日常的文件管理工作中,我们经常会遇到同一个文件存在多个版本,或者需要验证备份文件与源文件是否一致,下面我们就来看看如何使用wxPython模... 目录引言项目背景与需求应用场景核心需求运行结果技术选型程序设计界面布局核心功能模块关键代码解析文件大

C++多线程开发环境配置方法

《C++多线程开发环境配置方法》文章详细介绍了如何在Windows上安装MinGW-w64和VSCode,并配置环境变量和编译任务,使用VSCode创建一个C++多线程测试项目,并通过配置tasks.... 目录下载安装 MinGW-w64下载安装VS code创建测试项目配置编译任务创建 tasks.js

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模