用生命谱写代码的赞歌

0%

Django 学习

Django

Django 作为一个 Python 的高级 Web 框架,功能非常强大,本文简要总结了 Django 常用的 API,不定时更新……

端口号

默认8000, 可以修改为0.0.0.0:8080, 表示任意网关的8080端口, 0.0.0.0表示任意网口

项目与应用

  • manage.py –> 管理项目: 包括数据库建立, 服务器运行, 测试…
  • mysite目录
    • settings.py –> 配置文件: 应用, 中间件, 数据库, 静态目录各种配置…
    • urls.py –> URL映射配置文件: 决定一个url访问被哪个程序(函数)响应
    • wsgi.py –> Python应用程序或框架和Web服务器之间接口
  • blog应用 –> 分割功能
    • 创建blog –> python manage.py startapp blog
    • 添加blog –> mysite/settings.py –>INSTALLED_APPS
  • views.py –> 响应客户请求返回html页面
  • models.py –> 定义数据库中的表
  • admin.py –> admin相关
  • test.py –> 测试相关

新建项目

  • django-admin startproject mysite

新建应用

  • cd mysite –> 进入项目目录
  • python manage.py startapp blog –> 新建blog应用

报错信息

raise TypeError('view must be a callable or a list/tuple in the case of include().') –> 采用from blog.views import hello –> url(r'hello', hello)

正则表达式

  • 匹配类型
    • re.S –> 表示’.’匹配任意字符, 包括换行符
    • re.M –> 表示多行匹配, ‘.’匹配任意字符, 但不包括换行符
    • .* –> Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪), 总是尝试匹配尽可能多的字符
    • 非贪婪则相反,总是尝试匹配尽可能少的字符。在"*","?","+","{m,n}"后面加上?,使贪婪变成非贪婪。

例如: test.txt

1
2
3
4
5
6
hello my name is liming
where are you from
i am from america
AAAB235CCCAAA33VVCCCNNNMMMA
AAD234HJKBBBPPPCCCDDFFCC
CC567CCCSSSDSFAAA4567CUICCC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import re

fopen = open('../test.txt', 'r')
f = fopen.read().strip()

print("输出test.txt文件内容")
print(f)
print("=====" * 10)

print("贪婪匹配,re.S('.'匹配任意字符,包括换行符)")
print(re.findall("AAA(.*)CCC", f, re.S))
print("=====" * 10)

print("非贪婪匹配,re.S('.'匹配任意字符,包括换行符)")
list = re.findall("AAA(.*?)CCC", f, re.S)
print(list)
print("=====" * 10)

print("多行贪婪匹配,re.S('.'匹配任意字符,但不包括换行符)")
print(re.findall("AAA(.*)CCC", f, re.M))
print("=====" * 10)

print("多行非贪婪匹配,re.S('.'匹配任意字符,但不包括换行符)")
list = re.findall("AAA(.*?)CCC", f, re.M)
print(list)
print("=====" * 10)

print("re.M匹配多行,这里把换行符匹配掉")
for i in list:
print(re.findall("(\d+)", i, re.M))
print("=====" * 10)

print("把匹配出来的字段放到一个数组")
array = []
for lst in list:
re_list = re.findall("(\d+)", lst, re.M)
for i in re_list:
array.append(i)
for i in array:
print(i)

结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
输出test.txt文件内容
hello my name is liming
where are you from
i am from america
AAAB235CCCAAA33VVCCCNNNMMMA
AAD234HJKBBBPPPCCCDDFFCC
CC567CCCSSSDSFAAA4567CUICCC
==================================================
贪婪匹配,re.S('.'匹配任意字符,包括换行符)
['B235CCCAAA33VVCCCNNNMMMA\nAAD234HJKBBBPPPCCCDDFFCC\nCC567CCCSSSDSFAAA4567CUI']
==================================================
非贪婪匹配,re.S('.'匹配任意字符,包括换行符)
['B235', '33VV', '4567CUI']
==================================================
多行贪婪匹配,re.S('.'匹配任意字符,但不包括换行符)
['B235CCCAAA33VV', '4567CUI']
==================================================
多行非贪婪匹配,re.S('.'匹配任意字符,但不包括换行符)
['B235', '33VV', '4567CUI']
==================================================
re.M匹配多行,这里把换行符匹配掉
['235']
['33']
['4567']
==================================================
把匹配出来的字段放到一个数组
235
33
4567