Django 的操作
安装:
pip install Django
创建django工程
django-admin startproject mysite
python manage.py startapp blog
//urls 里添加 ,注意导入路径文件 ,在views 里添加对应的函数 def show_time():pass; urlpatterns = [
path('admin/', admin.site.urls),
path('show_time/', views.show_time), //对应的文件
]
在导入html文件的时候要注意
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR),"templates"], //此处创建一个templates,添加路径,识别视图
'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',
],
},
},
]
启动工程
terminal-----:python manage.py runserver 127.0.0.1:8080
需要使用jquery的时候需要创建static静态文件
//插入以下代码
// static/jquery-x.x.x.js
//当时调用的时候出错了,这里使用中括号或者下面的那段,末尾加, =.=!~
STATIC_URL = '/static/' #别名,如果修改了下面static文件名字,这里不影响前端导入
STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static") //识别, ]
// STATICFILES_DIRS=(
// os.path.join(BASE_DIR,"static"),
// )
Django URL (路由系统)
//tree:urls
urlpatterns=[
url(r"...",...)
url(r'article/(\d{4})',views.article_year #加括号代表分组 可以取得参数,无名分组
//url(r'article/(?p<year>\d{4})',views.article_year #命名分组
]
//tree:views #无命名分组
def article_year(request,year)
return HttpResponse("year:%s"%year)
以上是1.x 版本的正则表达方式,在做实验的时候本人使用的是2.x版本,竟然报错。一看文档2.x已经非常简化
url(r'article/(\d{4})',views.article_year 将改成以下
path("article/<int:year>/",views.article_year #<类型:命名>
Django默认支持以下5个转化器:
- str,匹配除了路径分隔符(
/)之外的非空字符串,这是默认的形式 - int,匹配正整数,包含0。
- slug,匹配字母、数字以及横杠、下划线组成的字符串。
- uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
- path,匹配任何非空字符串,包含了路径分隔符
注册自定义转化器
对于一些复杂或者复用的需要,可以定义自己的转化器。转化器是一个类或接口,它的要求有三点: regex 类属性,字符串类型 to_python(self, value) 方法,value是由类属性 regex 所匹配到的字符串,返回具体的Python变量值,以供Django传递到对应的视图函数中。 to_url(self, value) 方法,和 to_python 相反,value是一个具体的Python变量值,返回其字符串,通常用于url反向引用。 例子: [python] view plain copy
class FourDigitYearConverter:
regex = '[0-9]{4}'
def to_python(self, value):
return int(value)
def to_url(self, value):
return '%04d' % value 使用register_converter 将其注册到URL配置中: [python] view plain copy
from django.urls import register_converter, path
from . import converters, views
register_converter(converters.FourDigitYearConverter, 'yyyy')
urlpatterns = [
path('articles/2003/', views.special_case_2003),
path('articles/<yyyy:year>/', views.year_archive),
...
] 使用正则表达式
如果上述的paths和converters还是无法满足需求,也可以使用正则表达式,这时应当使用 django.urls.re_path函数。 在Python正则表达式中,命名式分组语法为 (?P<name>pattern) ,其中name为名称, pattern为待匹配的模式。 之前的示例代码也可以写为: [python] view plain copy
from django.urls import path, re_path
from . import views
urlpatterns = [
path('articles/2003/', views.special_case_2003),
re_path('articles/(?P<year>[0-9]{4})/', views.year_archive),
re_path('articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/', views.month_archive),
re_path('articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<slug>[^/]+)/', views.article_detail),
] 这段代码和之前的代码实现了基本的功能,但是还是有一些区别: 这里的代码匹配更加严格,比如year=10000在这里就无法匹配。
传递给视图函数的变量都是字符串类型,这点和 url 是一致的。
注册自定义转化器
----别名概念
//别名:添加一个学生注册
在templates 创建register.html视图
<form action="{% url 'reg' %}" method = "post">
urlpatterns=[
url(r"...",...)
//url(r'register',views.register,name="reg"), # 别名识别,就算修改了register是其他名称也不影响全局
]
def register(request):
# print(request.GET)
# print(request.GET.get("user")) if request.method=="POST":
print("--------------------")
print(request.POST)
print(request.POST.get("user"))
return HttpResponse("success!")
return render(request,"register.html")
<form action="{% url 'reg' %}" method="post">
跳转:
redirect("/blog/login/")
Django 的操作的更多相关文章
- Django models 操作高级补充
Django models 操作高级补充 字段参数补充: 外键 约束取消 ..... ORM中原生SQL写法: raw connection extra
- Django数据操作F和Q、model多对多操作、Django中间件、信号、读数据库里的数据实现分页
models.tb.objects.all().using('default'),根据using来指定在哪个库里查询,default是settings中配置的数据库的连接名称. 外话:django中引 ...
- 从命令行运行django数据库操作
从命令行运行django数据库操作,报错: django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_T ...
- Django数据库操作(增删改查)
Django数据库操作(增删改查) 创建数据库中的一个表 class Business(models.Model): #自动创建ID列 caption = models.CharField(max_l ...
- {Django基础八之cookie和session}一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session
Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx 七 ...
- django中操作cookie与session
cookie 什么是Cookie Cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上的一组组键值对,下次访问服务器时浏览器会自动携带这些键值对,以便服务器提取有用信息. Cookie的 ...
- Windows server iis部署Django详细操作
教程基于Windows server2012+Python3.6+IIS之上部署django的,同样适用于server2012之上的版本服务器和windows7以上的windows操作系统. 文章来自 ...
- [oldboy-django][2深入django]ORM操作
推荐学习博客:http://www.cnblogs.com/wupeiqi/articles/6216618.html 需求: 汇总django orm操作,代替原生mysql语句来操作数据库:里面内 ...
- 1122 django属性操作orm字段数据操作
目录 1. 静态文件的配置 手动静态文件的访问资源 静态文件的动态绑定 2.request方法 2.1 请求方式 2.2 获取前端的请求方式 request.method 2.3 request方法 ...
- Django 数据库操作
Django 数据库操作 Django运算表达式与Q对象/F对象 1 模型查询 概述: 1 查询集:表示从数据库中获取的对象的集合 2 查询集可以有多个过滤器,通过 逻辑运算符连接 3 过滤器就是一个 ...
随机推荐
- ajax请求中的6个全局事件
//事件触发顺序ajaxStart,ajaxSend,ajaxSuccess或ajaxError,ajaxComplete,ajaxStop $(document).ajaxStart(functio ...
- ES6,新增数据结构Map的用法
Javascript的Object本身就是键值对的数据结构,但实际上属性和值构成的是”字符串-值“对,属性只能是字符串,如果传个对象字面量作为属性名,那么会默认把对象转换成字符串,结果这个属性名就变成 ...
- 模仿ReentrantLock类自定义锁
简介 临近过年了,没什么需求,今天模仿ReentrantLock自定义写了一个自己锁,在这里记录一下,前提是对AQS原理有所了解,分享给大家 1.自定义锁MyLock package com.jack ...
- 微信mac版的bug 直接显示了消息原始数据
<msg> <voicemsg endflag="1" cancelflag="0" forwardflag="0" vo ...
- Halcon例程detect_indent_fft学习
************************************************************************************************ *** ...
- fputc和putc和putchar函数的用法
功 能: 输出一字符到指定流中 putc()与fputc()等价.不同之处为:当putc函数被定义为宏时,它可能多次计算stream的值. 关于fputc(): 原型:int fputc(char c ...
- windows下svn钩子实现每次提交更新至web目录
目的 找 到SVN Server中的仓库(Repositories)文件夹的位置,在相应的项目文件夹中找到hooks文件夹.在该文件夹中添加一个post- commit文件:当有commit动作发生时 ...
- 【代码审计】XYHCMS V3.5代码执行漏洞分析
0x00 环境准备 XYHCMS官网:http://www.xyhcms.com/ 网站源码版本:XYHCMS V3.5(2017-12-04 更新) 程序源码下载:http://www.xyhc ...
- 《精通Python网络爬虫》
抓包工具 Fiddler 爬虫的浏览器伪装技术 Python Scrapy 框架
- c++ union内存
看一个例子: #include <iostream> #include <stdio.h> using namespace std; union A { int a; stru ...