django 路由系统,数据库操作
数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME':'dbname',
'USER': 'root',
'PASSWORD': 'xxx',
'HOST': '',
'PORT': '',
}
}
# 由于Django内部连接MySQL时使用的是MySQLdb模块,而python3中还无此模块,所以需要使用pymysql来代替
# 如下设置放置的与project同名的配置的 __init__.py文件,或settings 中, 目的就是执行一遍pymysql.install......
import pymysql
pymysql.install_as_MySQLdb()
模版及静态文件:
TEMPLATE_DIRS = [
os.path.join(BASE_DIR, 'templates'),
]
STATICFILES_DIRS = (
(os.path.join(BASE_DIR, 'static'),
)
- 单一路由对应:
path('home/', views.index)
内置正则路由:
path('articles/<int: pid>/', views.article)
article函数内:
def article(request, *args, **kwargs):
#kwargs 中存储了{'pid': 17}
return render(request, 'aritcle.html')为路由映射设置名称
path('home/', views.home, name='home'),
path('article/int:pid', views.index, name='article'),
设置名称之后,可以在不同的地方调用,如:
模板中使用生成URL {% url 'home' 2017 %}
函数中使用生成URL reverse('article', args=(2017,)) from django.urls import reverse
Model中使用获取URL 自定义get_absolute_url() 方法
使用django.urls下的 include方法进行二级路由分配
一级路由:
project同名的urls.py文件内:
from django.urls import path
from django.urls import include
urlpatterns = [
path('blog/', include('blog.urls')),
]
二级路由:
app下创建urls.py
from django.urls import path
from blog import views
urlpatterns = [
path('index/', views.index),
]
name 参数与路由反解:
经常在视图函数中需要拿到前来的路由关系,除了:
request.path_info拿到全路径只为,
还能使用django.urls 下的 reverse(name)函数进行反解url
只需要在urls.py文件中的路由关系映射后面加上name参数,并给一个值,让reverse拿着这个值反解
#urls.py 内
urlpatterns = [
path('article/', views.article, name='article'),
]
#views.py文件内
from django.urls import reverse
def article(request):
url_article = reverse('article')
return render(request, 'article.html', {'url': url_article})
命名空间:
#project.urls.py
from django.conf.urls import url,include
urlpatterns = [
path('a/', include('blog.urls', namespace='author-polls')),
path('b/', include('blog.urls', namespace='publisher-polls')),
]
blog.urls.py
from django.conf.urls import path
from blogimport views
app_name = 'blog'
urlpatterns = [
path('article/<int:pid>/$', views.detail, name='detail')
]
以上定义带命名空间的url之后,使用name生成URL时候,应该如下:
v = reverse('author-polls:detail', kwargs={'pid':11})
{% url 'publisher-polls:detail' pid=12 %}
django 路由系统,数据库操作的更多相关文章
- 【python】-- Django路由系统(网址关系映射)、视图、模板
Django路由系统(网址关系映射).视图.模板 一.路由系统(网址关系映射) 1.单一路由对应: 一个url对应一个视图函数(类) urls.py: url(r'^test', views.test ...
- Django路由系统
django路由系统 简而言之,django的路由系统作用就是使views里面处理数据的函数与请求的url建立映射关系.使请求到来之后,根据urls.py里的关系条目,去查找到与请求对应的处理方法,从 ...
- Django 路由系统
Django 路由系统 基本格式 from django.conf.urls import url urlpatterns = [ url(正则表达式, views视图函数,参数,别名), ] 参数说 ...
- Python学习---Django路由系统【all】
Django URL (路由系统) Django URL (路由系统): URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL模式以及要为该URL模式调用的视图函数之间的映 ...
- 关于Django中的数据库操作API之distinct去重的一个误传
转载自http://www.360doc.com/content/18/0731/18/58287567_774731201.shtml django提供的数据库操作API中的distinct()函数 ...
- Django路由系统-分组命名匹配
Django路由系统 分组命名匹配 在上述基本配置示例中,使用了简单的正则表达式分组匹配来捕获URL中的值并以位置参数的形式传递给视图,例如url(r'^articles/([0-9]{4})/( ...
- Django路由系统-URLconf配置、正则表达式简述
Django路由系统 1.11版本官方文档 URL配置就像是Django项目的目录,它的本质是URL与URL调用的函数之间的映射表,Django会根据URL配置,在遇到一个URL时,就去执行相应的 ...
- Django【第5篇】:Django之ORM数据库操作
django之ORM数据库操作 一.ORM介绍 映射关系: 表名 -------------------->类名 字段-------------------->属性 表记录-------- ...
- django上课笔记1-目录介绍-路由系统-ORM操作
一.Django目录介绍 django-admin startproject mysite # 创建名为mysite的项目 cd mysite # 切换到该目录下 python manage.py s ...
随机推荐
- Scrapy (网络爬虫框架)入门
一.Scrapy 简介: Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,Scrapy 使用了 Twisted['twɪstɪd](其主要对手是Tornado) ...
- JAVA的三个版本EE,SE,ME
1998年 SUN发布三个不同版本JAVA,分别是: Java J2EE(Java Platform,Enterprise Edition) JAVA企业版,应用为开发和部署可移植.健壮.可伸缩且安全 ...
- 力扣算法题—051N皇后问题
#include "000库函数.h" //使用回溯法来计算 //经典解法为回溯递归,一层一层的向下扫描,需要用到一个pos数组, //其中pos[i]表示第i行皇后的位置,初始化 ...
- 使用Three.js挖空安装门来解决重叠闪烁的问题
一.挖空原理说明 subtract 用墙面减去与门重叠的部分,产生一个新的对象,导入材质安装门即可 //参与减去几何体 //平行于x轴门 var meshH4Door = new ThreeBSP( ...
- 经常在比特币中看到的merkle树是什么?
区块基础-merkle树 Merkle tree中文叫做梅克尔树,这当然不是一棵真正的植物树,merkle tree是计算机数据结构中的一种树,是由计算机科学家 Ralph Merkle 提出的, ...
- 深入理解Ribbon之源码解析
什么是Ribbon Ribbon是Netflix公司开源的一个负载均衡的项目,它属于上述的第二种,是一个客户端负载均衡器,运行在客户端上.它是一个经过了云端测试的IPC库,可以很好地控制HTTP和TC ...
- PHP程序员的能力水平层次
PHP程序员的能力水平层次 之前看过很多篇关于服务端工程师和PHP开发者的能力模型介绍,每篇都对能力有侧重点. 下面我们来详细谈谈以开发能力为基准点的PHP程序员的能力水平层次. 层层递进 1.功能开 ...
- spring boot启动报错
Exception encountered during context initialization - cancelling refresh attempt: org.springframewor ...
- Matconvnet安装
本文主要介绍Linux下Matconvnet的安装注意事项. 最近帮老师校验一份超分的代码,用到了matconvnet深度学习工具包.代码里面使用的是Matconvnet-1.0-beta20版本, ...
- Egg入门学习(三)---理解中间件作用
Egg是基于koa的,因此Egg的中间件和Koa的中间件是类似的.都是基于洋葱圈模型的. 在Egg中,比如我想禁用某些IP地址来访问我们的网页的时候,在egg.js中我们可以使用中间件来实现这个功能, ...