Django 笔记(二) 新建 ~ 渲染
新建APP
python manange.py startapp app_name
然后右键 pycharm 的项目目录,将新建的目录从服务器上下载进来
URL(Uniform Resoure Locator)统一资源定位符
格式:
http://127.0.0.1:8000/hello/
URL解释:
schema://host[:port#]/path/.../[?query-string][#anchor]
schema:指定使用的协议(例如:http,https,ftp)
host:Http服务器的IP地址或者域名
port:端口号,http默认是80端口
path:访问资源的路径
query-string:发送给http服务器的数据
anchor:锚点
urls.py的作用
path('test/<xx>/', views.test)
前面的url匹配成功后就会调用后面的视图函数。
尖括号从url中捕获值,包含一个转化器类型(converter type)。
没有转化器,将匹配任意字符串,当然也包括了 / 字符。
注:<xx> 必须与视图函数的参数一致
例:def test(request, xx)
转换器:
str:匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式
int:匹配正整数,包含0
slug:匹配字母、数字以及横杠、下划线组成的字符串
uuid:匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00
path:匹配任何非空字符串,包含了路径分隔符
re_path 正则匹配:
可使用正则的方法匹配
include 的作用:
一个 project 有一个棕的 urls.py ,各个 app 也可以自己建立自己的 urls.py
用 include() 函数在project的 urls.py 文件进行注册
例:
from django.urls import path, include
from . import views
urlpatterns = [
path('book/', include('book.urls'))
]
此时 APP books 里面的 urls.py
from django.urls import path
from . import views
urlpatterns = [
path('index/', views.index)
]
此时 APP books 里面的 views.py
from django.shortcuts import render def index(request): return render(request, '这是 book 的首页')
kwargs 的作用:
不定长参数
如果在分 urls.py 添加了字典参数
path('book/',views.test, {‘switch’: 'true'})
views 下面的 test 函数形参需要额外增加一个 **kwargs
如果在使用了 include , 主 views 添加了 字典参数
其分之下所有函数形参都需要添加 **kwargs
name 的作用:
可以给 url 取名字,通过该名字找到对应 url,这样左的原因是防止 url 的规则更改,导致使用了该 url 的地方也要更改,但如去了名字,就不要做任何改动了。
APP books里的 urls.py
path('article_name/', views.article_new, name='new_article')
APP books 里的 views.py
from django.shortcuts import render, reverse, redirect
return redirect(reverse('new_article'))
注:redirect 是重定向(跳转), reverse 是将 url 的 name 解析成 url 本身的函数
templates 模板:
该模板可新建各个以 app 命名的目录存放各自 app 模板文件
然后在 setting.py 中的模板路径配置修改以下内容
TEMPLATES = [
'DIRS': [os.path.join(BASE_DIR, 'templates')],
]
渲染模板(三种方法选一,皆需 import 导入才能使用):
1.直接将html字符串硬编码 HttpResponse 中
def index(request):
return HttpResponse('<h1>Hello Django World!</h1>')
2. django.template.loader 定义了函数以加载模板
from django.template.loader import get_template
def index(request):
t = get_template('book/index.html')
html = t.render()
return HttpResponse(html)
3.使用 render 进行渲染(建议此方法)
def index(request): return render(request, 'book/index.html')
Django 笔记(二) 新建 ~ 渲染的更多相关文章
- django笔记二之数据库
django笔记二之数据库 [同步数据库之前的操作] yum install MySQL-python.x86_64 -y 2)开启数据库服务并创建表 创建数据库设置 为utf8: create da ...
- 【Django笔记二】Django2.0配置模板和静态文件
一.环境版本信息: 操作系统:windows10 Django版本:2.0.5 Python版本:3.6.4 二.创建模板 1.在my_project文件夹下新建文件夹templates用于存放模板文 ...
- 微信小程序学习笔记二 列表渲染 + 条件渲染
1. 列表渲染 1.1 wx:for 在组件上使用wx:for控制属性绑定一个数组, 即可使用数组中各项的数据重复渲染该组件 默认数组的当前项的下标变量名默认为 index, 数组当前项的变量名默认为 ...
- django笔记(二)
Model many-to-many可以通过through来定义详细信息. 表结构: property django可以用F和Q来配合查找,F可以用于同一个model不同field之间进行比较,可以对 ...
- Django学习笔记二
Django学习笔记二 模型类,字段,选项,查询,关联,聚合函数,管理器, 一 字段属性和选项 1.1 模型类属性命名限制 1)不能是python的保留关键字. 2)不允许使用连续的下划线,这是由dj ...
- Django开发笔记二
Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.xadmin添加主题.修改标题页脚和收起左侧菜单 # ...
- DirectX11笔记(十二)--Direct3D渲染8--EFFECTS
原文:DirectX11笔记(十二)--Direct3D渲染8--EFFECTS 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010333737 ...
- python Django教程 之模板渲染、循环、条件判断、常用的标签、过滤器
python3.5 manage.py runserver python Django教程 之模板渲染.循环.条件判断.常用的标签.过滤器 一.Django模板渲染模板 1. 创建一个 zqxt_tm ...
- Django笔记 —— 模板
最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...
- Mastering Web Application Development with AngularJS 读书笔记(二)
第一章笔记 (二) 一.scopes的层级和事件系统(the eventing system) 在层级中管理的scopes可以被用做事件总线.AngularJS 允许我们去传播已经命名的事件用一种有效 ...
随机推荐
- cookie与session的区别与关系
cookie与session的区别 1. 存储位置不同 cookie存储在浏览器中 session存储在服务端里 2. 大小不同 cookie最大4K session由于是存在服务端,因此理论上没有大 ...
- Node.js学习入门
Node.js是什么 Node.js是一个可以允许我们在服务器端运行JavaScript代码的程序. 这是什么意思呢?通常,我们写的JavaScript代码都是在浏览器中运行的. 实际上,浏览器就是一 ...
- php下curl ssl常用问题
1. 查看curl版本 在phpinfo中,可以查看 curl cURL support enabled cURL Information 7.35.0 Age 3 Features AsynchDN ...
- java.lang.NoClassDefFoundError: org/apache/commons/collections/FastHashMap-----commons-ctions版本问题
今天用到了一系列的第三方jar包,一环扣一环, 记住一个: 倘若你所导入的第三方jar包中的类一直显示未找到,那就是你的路径出问题了, /WEB-INF/lib目录下才是放第三方jar包位置, 但是今 ...
- JS算法练习三
JS算法练习 1.生成一个长度为10的随机数组,使用冒泡法给数组排序 var arr=new Array(10); for (var i = 0; i <arr.length ; i++) { ...
- Java基础_0304:构造方法
构造方法 如果要实例化新的对象,那么肯定需要使用关键字new来完成,但是除了new这个关键字之外,还有可能在对象实例化时为其进行一些初始化的准备操作,这个时候就需要构造方法的支持了 构造方法本身是一种 ...
- MySQL - GROUP BY和HAVING的用法
按姓名分组查询 SELECT username, COUNT(username) AS '人数' FROM t_user GROUP BY username 只查询姓名相同的人 SELECT user ...
- .Net Core 配置文件appsettings
1.配置文件为appsettings 在appsettings添加ConnectionStrings: { "Logging": { "IncludeScopes&quo ...
- 20165234 《Java程序设计》第八周学习总结
第八周学习总结 教材内容学习 第十二章 Java 多线程机制 进程与线程 进程是程序的一次动态执行过程,对应了从代码加载.执行至执行完毕的一个完整过程. 线程不是进程,是比进程更小的执行单位. 一个进 ...
- TensorFlow学习笔记之--[tf.app.flags使用方法]
很多时候在运行python代码的时候我们需要从外部定义参数,从而避免每次都需要改动代码.所以一般我们都会使用 argparse 这个库.其实TensorFlow也提供了这个功能,那就是 tf.app. ...