python_18(Django基础)
第1章 web框架的本质
1.1 socket
1.2 空格后面是主体内容
1.3 HTTP协议
1.3.1 响应流程
1.4 HTTP请求方法
1.5 HTTP工作原理
1.6 URL
1.7 HTTP请求格式
1.8 HTTP响应格式
1.9 根据不同的路径返回不同内容
1.10 进阶版
1.11 根据访问的路径返回不同的动态页面
第2章 Django安装创建
2.1 部署安装
2.1.1 下载
2.2 命令行创建项目
2.2.1 djangoadmin
2.2.2 添加环境变量
2.2.3 创建命令
2.3 pycharm 形式创建项目
2.4 命令行启动项目
2.4.1 关闭
2.5 创建app
2.5.1 目录结构
2.6 注册APP
2.7 第一个index
第3章 函数规范
3.1.1 app.views.py:
3.1.2 untitled3.urls.py
3.1.3 disable cache
3.2 静态文件
3.2.1 别名
第4章 模板(未完待续)
4.1 创建templates目录
4.2 修改settings文件
4.3 render模块
4.4 特殊符号{{}}
4.4.1 变量
第5章 路由系统(未完待续)
5.1 基本格式
5.2 urls.py
5.3 参数说明
5.4 区别django2.0
5.5 注意事项
5.6 补充说明
第6章 settings介绍(未完待续)
6.1 目录介绍
6.2 模板配置
6.3 静态文件配置
6.4 中间件配置
第7章 Django视图函数
7.1 基础必备三件套:
7.2 HttpResponse
7.3 render
7.4 redirect
7.5 request
7.5.1 path_info
7.6 request.method
7.6.1 request.POST.get
7.6.2 request.GET
第8章 ORM数据库链接
8.1 创建数据库
8.2 配置settings
8.3 配置pymysql
8.4 配置models.py
8.5 执行数据库迁移的命令
8.6 ORM操作
8.6.1 查询
8.6.2 增加
8.6.3 删除
8.6.4 修改
第1章 web框架的本质
1.1 socket
基于最基本的socket演变而来
python_socket(代码)
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import socket
sk = socket.socket()
sk.bind(('127.0.0.1',80))
sk.listen()
while True:
conn,addr = sk.accept()
data = conn.recv(8096)
print(data)
conn.send(b"ok")
conn.close()
浏览器访问打印
b'GET / HTTP/1.1\r\nHost: 127.0.0.1\r\nConnection: keep-alive\r\nCache-Control: max-age=0\r\nUpgrade-Insecure-Requests: 1\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate, sdch, br\r\nAccept-Language: zh-CN,zh;q=0.8\r\n\r\n'
b'GET /favicon.ico HTTP/1.1\r\nHost: 127.0.0.1\r\nConnection: keep-alive\r\nPragma: no-cache\r\nCache-Control: no-cache\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36\r\nAccept: image/webp,image/*,*/*;q=0.8\r\nReferer: http://127.0.0.1/\r\nAccept-Encoding: gzip, deflate, sdch, br\r\nAccept-Language: zh-CN,zh;q=0.8\r\n\r\n'
我们将\r\n替换成换行看得更清晰点:
GET / HTTP/1.1
Host: 127.0.0.1:8080
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3355.4 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: csrftoken=CtHePYARJOKNx5oNVwxIteOJXpNyJ29L4bW4506YoVqFaIFFaHm0EWDZqKmw6Jm8
访问知乎显示
1.2 空格后面是主体内容
import socket
sk = socket.socket()
sk.bind(('127.0.0.1',80))
sk.listen()
while True:
conn,addr = sk.accept()
data = conn.recv(8096)
print(data)
conn.send(b'HTTP/1.1 200 ok\r\nContent-Type: text/html: charset=utf-8\r\n\r\n')
conn.send('随便'.encode('utf-8'))
conn.close()
sk.close()
浏览器输出
1.3 HTTP协议
1.3.1 响应流程
在浏览器地址栏键入URL,按下回车之后会经历以下流程:
l 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
l 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;
l 浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;
l 服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;
l 释放 TCP连接;
l 浏览器将该 html 文本并显示内容;
1.4 HTTP请求方法
共有八种方法(也称“动作”)来以不同方式操作指定的资源,其中最常见的有两种:
l GET
向指定的资源发出“显示”请求,使用GET方法应该只用在读取数据,而不应该被用于产生副作用的操作中,例如在web application中,其中一个原因是GET可能会被网络蜘蛛随意访问。
l POST
向指定资源提交数据,请求服务器进行处理(例如提交表单或者上环文件)。数据被包含在请求文本中,这个请求可能会创建新的资源或者修改现有资源,或者都有
1.5 HTTP工作原理
HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。
1.6 URL
超文本传输协议(HTTP)的统一资源定位符将从因特网获取信息的五个基本元素包括在一个简单的地址中:
l 传送协议。
l 层级URL标记符号(为[//],固定不变)
l 访问资源需要的凭证信息(可省略)
l 服务器。(通常为域名,有时为IP地址)
l 端口号。(以数字方式表示,若为HTTP的默认值“:80”可省略)
l 路径。(以“/”字符区别路径中的每一个目录名称)
l 查询。(GET模式的窗体参数,以“?”字符为起点,每个参数以“&”隔开,再以“=”分开参数名称与数据,通常以UTF8的URL编码,避开字符冲突的问题)
l 片段。以“#”字符为起点
以http://www.luffycity.com:80/news/index.html?id=250&page=1 为例, 其中:
http,是协议;
www.luffycity.com,是服务器;
80,是服务器上的网络端口号;
/news/index.html,是路径;
?id=250&page=1,是查询。
大多数网页浏览器不要求用户输入网页中“http://”的部分,因为绝大多数网页内容是超文本传输协议文件。同样,“80”是超文本传输协议文件的常用端口号,因此一般也不必写明。一般来说用户只要键入统一资源定位符的一部分(www.luffycity.com:80/news/index.html?id=250&page=1)就可以了。
1.7 HTTP请求格式
1.8 HTTP响应格式
1.9 根据不同的路径返回不同内容
import socket
sk = socket.socket()
sk.bind(('127.0.0.1',80))
sk.listen()
while True:
conn,addr = sk.accept()
data = conn.recv(8096)
print(data)
conn.send(b'HTTP/1.1 200 ok\r\nContent-Type: text/html: charset=utf-8\r\n\r\n')
url = data.decode('utf-8').split()[1]
print(url)
if url == '/oumei':
conn.send('欧美'.encode('utf-8'))
elif url == '/rihan':
conn.send('日韩'.encode('utf-8'))
else:
conn.send('正在录制中'.encode('utf-8'))
conn.close()
sk.close()
1.10 进阶版
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import socket
def oumei(url):
return '欧美{}'.format(url).encode('utf-8')
def rihan(url):
return '日韩{}'.format(url).encode('utf-8')
def guochan(url):
return '国产{}'.format(url).encode('utf-8')
list = [
('/rihan',rihan),
('/oumei',oumei),
('/guochan',guochan),
]
sk = socket.socket()
sk.bind(('127.0.0.1',80))
sk.listen()
while True:
conn,addr = sk.accept()
data = conn.recv(8096)
print(data)
conn.send(b'HTTP/1.1 200 ok\r\nContent-Type: text/html: charset=utf-8\r\n\r\n')
url = data.decode('utf-8').split()[1]
print(url)
func = None
for i in list:
if i[0] == url:
func = i[1]
break
if func:
ret = func(url)
else:
ret = '正在录制中'.encode('utf-8')
conn.send(ret)
conn.close()
sk.close()
1.11 根据访问的路径返回不同的动态页面
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import socket
def index(url):
import time
with open('index.html','r',encoding='utf-8') as f:
data = f.read()
data = data.replace(@@xx@@,time.strftime("%Y-%m-%d %H:%M:%S"))
return data.encode('utf-8')
def oumei(url):
return '欧美{}'.format(url).encode('utf-8')
def rihan(url):
return '日韩{}'.format(url).encode('utf-8')
def guochan(url):
return '国产{}'.format(url).encode('utf-8')
list = [
('/rihan',rihan),
('/oumei',oumei),
('/guochan',guochan),
]
sk = socket.socket()
sk.bind(('127.0.0.1',80))
sk.listen()
while True:
conn,addr = sk.accept()
data = conn.recv(8096)
print(data)
conn.send(b'HTTP/1.1 200 ok\r\nContent-Type: text/html: charset=utf-8\r\n\r\n')
url = data.decode('utf-8').split()[1]
print(url)
func = None
for i in list:
if i[0] == url:
func = i[1]
break
if func:
ret = func(url)
else:
ret = '正在录制中'.encode('utf-8')
conn.send(ret)
conn.close()
sk.close()
index.html(代码)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
<h1>澳门首家皇家赌场上线啦!!</h1>
@@xx@@
</body>
</html>
第2章 Django安装创建
2.1 部署安装
版本信息:1.11 目前只有1.11支持python2.7
\
2.1.1 下载
命令行:
命令行:pip3 install django==1.11.15
查看命令:pip3 list
pycham下载
2.2 命令行创建项目
2.2.1 djangoadmin
2.2.2 添加环境变量
2.2.3 创建命令
django-admin startproject 项目名
例:
django-admin startproject s22
当前路径下创建的s22项目
2.3 pycharm 形式创建项目
2.4 命令行启动项目
cd C:\Users\Administrator\s22
python3 manage.py runserver
浏览器访问:
http://127.0.0.1:8000/
更改端口
python3 manage.py runserver 80
python3 manage.py runserver 127.0.0.1:9999
2.4.1 关闭
2.5 创建app
l 命令行创建
python manage.py startapp app01
l pycharm创建
2.5.1 目录结构
admin -----管理后台
apps ----配置相关
models-----
views-------具体业务逻辑函数
2.6 注册APP
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01',
'app02.apps.AppConfig' è 标准写法会自动读取app02下的py文件
]
2.7 第一个index
urls.py:
from django.conf.urls import url
from django.contrib import admin
from django.shortcuts import HttpResponse
def index(request):
return HttpResponse('这是index页面')
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'index',index)
]
输出
第3章 函数规范
l urls.py---------------------只记录地址url
l app下的views.py-------写入函数代码
3.1.1 app.views.py:
from django.shortcuts import render
# Create your views here.
from django.shortcuts import HttpResponse
def index(request):
return HttpResponse('<h1>这是index页面<\h1>')
3.1.2 untitled3.urls.py
from django.contrib import admin
from app01 import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'index',views.index)
]
3.1.3 disable cache
解释:清除缓存影响
3.2 静态文件
settings.py
STATIC_URL = '/static999/' #别名
STATICFILES_DIRS=[
os.path.join(BASE_DIR,'static')
]
注释;变量名不能错有两个s
3.2.1 别名
例:login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登录页面</title>
<link rel="stylesheet" href="/static999/bootstrap-3.3.7/css/bootstrap.css">
<link rel="stylesheet" href="/static/lgoin.css">
</head>
第4章 模板(未完待续)
4.1 创建templates目录
4.2 修改settings文件
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR,'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',
],
},
},
]
templates.index:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
<h1>这是index页面!!!!!</h1>
</body>
</html>
4.3 render模块
app.vivews
# Create your views here.
from django.shortcuts import HttpResponse,render
def index(request):
# return HttpResponse('<h1>这是index页面<\h1>')
return render(request,'index.html')
4.4 特殊符号{{}}
{{}} 表示变量,在模板渲染的时候替换成值
{% %}表示逻辑相关的操作
{%endfor%}
4.4.1 变量
{{ 变量名 }}
变量名由字母数字和下划线组成。
点(.)在模板语言中有特殊的含义,用来获取对象的相应属性值。
第5章 路由系统(未完待续)
URL配置(URLconf)就像Django所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表。
5.1 基本格式
from django.conf.urls import url
urlpatterns = [
url(正则表达式, views视图,参数,别名),
]
5.2 urls.py
从上往下进行匹配第一个参数是正则
示例
from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'index',views.index)
]
示例:
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^articles/2003/$', views.special_case_2003),
url(r'^articles/([0-9]{4})/$', views.year_archive),
url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive),
url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail),
]
5.3 参数说明
l 正则表达式:一个正则表达式字符串
l views视图:一个可调用对象,通常为一个视图函数
l 参数:可选的要传递给视图函数的默认参数(字典形式)
l 别名:一个可选的name参数
5.4 区别django2.0
from django.urls import path,re_path
urlpatterns = [
path('articles/2003/', views.special_case_2003),
path('articles/<int:year>/', views.year_archive),
path('articles/<int:year>/<int:month>/', views.month_archive),
path('articles/<int:year>/<int:month>/<slug:slug>/', views.article_detail),
]
5.5 注意事项
l urlpatterns中的元素按照书写顺序从上往下逐一匹配正则表达式,一旦匹配成功则不再继续。
l 若要从URL中捕获一个值,只需要在它周围放置一对圆括号(分组匹配)。
l 不需要添加一个前导的反斜杠,因为每个URL 都有。例如,应该是^articles 而不是 ^/articles。
l 每个正则表达式前面的'r' 是可选的但是建议加上。
5.6 补充说明
是否开启URL访问地址后面不为/跳转至带有/的路径的配置项
APPEND_SLASH=True
Django settings.py配置文件中默认没有 APPEND_SLASH 这个参数,但 Django 默认这个参数为 APPEND_SLASH = True。 其作用就是自动在网址结尾加'/'。
其效果就是:
我们定义了urls.py:
from django.conf.urls import url
from app01 import views
urlpatterns = [
url(r'^blog/$', views.blog),
]
访问 http://www.example.com/blog 时,默认将网址自动转换为 http://www.example/com/blog/ 。
如果在settings.py中设置了 APPEND_SLASH=False,此时我们再请求 http://www.example.com/blog 时就会提示找不到页面。
第6章 settings介绍(未完待续)
6.1 目录介绍
mysite/
├── manage.py # 管理文件
└── mysite # 项目目录
├── __init__.py
├── settings.py # 配置
├── urls.py # 路由 --> URL和函数的对应关系
└── wsgi.py # runserver命令就使用wsgiref模块做简单的web server
6.2 模板配置
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, "template")], # template文件夹位置
'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',
],
},
},
]
6.3 静态文件配置
STATIC_URL = '/static/' # HTML中使用的静态文件夹前缀
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"), # 静态文件存放位置
]
6.4 中间件配置
说明:刚开始学习时可在配置文件中暂时禁用csrf中间件,方便表单提交测试。
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
第7章 Django视图函数
7.1 基础必备三件套:
1. HttpResponse('home') —— 返回一个字符串
2. render(request,'index.html') —— 返回一个具体的页面(tenplates写好的)
3. redirect(跳转的URL) ——重定向 响应头 location:'跳转的地址'
from django.shortcuts import HttpResponse, render, redirect
7.2 HttpResponse
解释:内部传入一个字符串参数,返回给浏览器。
例如:
def index(request):
# 业务逻辑代码
return HttpResponse("OK")
7.3 render
除request参数外还接受一个待渲染的模板文件和一个保存具体数据的字典参数。
将数据填充进模板文件,最后把结果返回给浏览器。(类似于我们上面用到的jinja2)
例如:
def index(request):
# 业务逻辑代码
return render(request, "index.html", {"name": "alex", "hobby": ["烫头", "泡吧"]})
7.4 redirect
接受一个URL参数,表示跳转到指定的URL。
例如:
def index(request):
# 业务逻辑代码
return redirect("/home/")
注释:
l /home/ 加/表示从根开始跳转: url 127.0.0.1:8000/home
l home/表示在原有url上拼接: 127.0.0.1:8000/index/home
l 可以接完整url
return redirect("http://www.baidu.com")
7.5 request
request.path_info ——》URL路径
request.method ——》请求方式
request.POST ——》POST提交的数据 { }
request.GET ——》URL上的参数 /login/?username=alex&passwor=123
7.5.1 path_info
获取url访问路径
appo1.views.py
def index(request):
print(request.path_info)
return HttpResponse('<h1>这是管理页面<\h1>')
输出:
/index/
[20/Sep/2018 14:01:37] "GET /index/ HTTP/1.1" 200 27
7.6 request.method
解释:获取请求方式
7.6.1 request.POST.get
例:获取用户输入POST信息
app01.views.py
#定义登录页面
def login(request):
if request.method == 'POST':
print(request.POST)
username = request.POST.get('username','') è get获取字典值不报错,并定义返回值 ‘ ’为空
password = request.POST.get('password','')
if username == 'lili' and password == '123456':
return HttpResponse('登录成功')
else:
return HttpResponse('登录失败')
return render(request, 'login.html')
输出
[20/Sep/2018 14:44:12] "POST /login/ HTTP/1.1" 200 12
<QueryDict: {'username': ['wang'], 'password': ['123']}>
7.6.2 request.GET
第8章 ORM数据库链接
8.1 创建数据库
create database django1
8.2 配置settings
# Database
# https://docs.djangoproject.com/en/1.11/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
改为
# Database
# https://docs.djangoproject.com/en/1.11/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',èè支持的数据库类型
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'NAME': 'django2',
'USER': 'root',
'PASSWORD': '',
'HOST': '127.0.0.1',
'PORT': 3306,
}
}
8.3 配置pymysql
在项目同名的文件夹下的__init__.py中写代码:
import pymysql
pymysql.install_as_MySQLdb()
8.4 配置models.py
在app下的models.py中写类:
class Publisher(models.Model):
nid = models.AutoField(primary_key=True)
name = models.CharField(max_length=16)
8.5 执行数据库迁移的命令
python manage.py makemigrations # 保存APP下的models.py的变更记录
pyhton manage.py migrate # 将变更记录同步到数据库中
注意:指定app 默认所有注册的app根据modle 来记录来配置数据库记录资源
python manage.py makemigrations app01 针对app01做数据变更迁移 默认是setting登记过的
8.6 ORM操作
8.6.1 查询
获取所有数据
models.Publisher.objects.all() —— 》 queryset 对象列表
获取满足条件的所有数据数据
models.Publisher.objects.filter(name='xxx') —— 》 queryset 对象列表
排序
models.Publisher.objects.all().order_by('id') —— 》 queryset 对象列表 升序
models.Publisher.objects.all().order_by('-id') —— 》 queryset 对象列表 降序序
获取一个对象
models.Publisher.objects.get(nid=1)
# 获取不到或者获取多个就报错
8.6.2 增加
models.Publisher.objects.create(name='xxxxx') —— 》成功插入的对象
8.6.3 删除
models.Publisher.objects.filter(nid=nid).delete() ——》 删除满足条件的所有对象
models.Publisher.objects.get(nid=nid).delete() ——》 删除对应的对象
8.6.4 修改
pub_obj = models.Publisher.objects.get(nid=nid)
pub_obj.name = 'xxxx'
pub_obj.save() # 写入数据库
python_18(Django基础)的更多相关文章
- Python之路-(js正则表达式、前端页面的模板套用、Django基础)
js正则表达式 前端页面的模板套用 Django基础 js正则表达式: 1.定义正则表达式 /.../ 用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m ...
- Django 基础教程
Django 基础教程 这是第一篇 Django 简介 » Django 是由 Python 开发的一个免费的开源网站框架,可以用于快速搭建高性能,优雅的网站! 你一定可以学会,Django 很简单 ...
- python的django基础篇
一.Django基础 Django 是用Python开发的一个免费开源的Web框架,可以用于快速搭建高性能,优雅的网站! Django的特点: 强大的数据库功能:拥有强大的数据库操作接口(QueryS ...
- Python学习(二十六)—— Django基础一
转载自:http://www.cnblogs.com/liwenzhou/p/8258992.html 一.Web框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的 ...
- Django基础(一)
Django基础(一) 知识预览 Django基本命令 二 路由配置系统(URLconf) 三 编写视图 四 Template 五 数据库与ORM admin的配置 一 什么是web框架? 框架,即f ...
- python3之Django基础篇
一.Django基础 Django 是用Python开发的一个免费开源的Web框架,可以用于快速搭建高性能,优雅的网站! Django的特点: 强大的数据库功能:拥有强大的数据库操作接口(QueryS ...
- DJango 基础 (1)
django基础 知识点: 基本认知 工具准备 新建项目 目录及文件说明 开发服务器 创建视图函数 新建应用(app) 1.基本认知 Django是用Python开发的一个免费开源的Web框架,可以用 ...
- Django基础和基本使用
Django基础 Django是Python下的一款著名的Web框架 框架 任何语言进入到高级部分时,会有认证.session.http.连接数据库等等功能操作,没有框架时需要自己实现 框架 是整个或 ...
- {Django基础十之Form和ModelForm组件}一 Form介绍 二 Form常用字段和插件 三 From所有内置字段 四 字段校验 五 Hook钩子方法 六 进阶补充 七 ModelForm
Django基础十之Form和ModelForm组件 本节目录 一 Form介绍 二 Form常用字段和插件 三 From所有内置字段 四 字段校验 五 Hook钩子方法 六 进阶补充 七 Model ...
随机推荐
- <ZZ>linux yum命令详解
http://www.cnblogs.com/chuncn/archive/2010/10/17/1853915.html yum(全称为 Yellow dog Updater, Modified)是 ...
- java连接oracle的几种方式
jdbc连接(驱动包ojdbc6.jar)String driver = "oracle.jdbc.OracleDriver"; //驱动标识符 String url = &quo ...
- CISCO-路由器交换机密码恢复
路由器密码恢复: 准备工作:一台PC跟一台路由器用console线相连 工作原理:如果忘记密码被锁在路由器外,通过修复寄存器值来进行修复 默认的寄存器值为0x2102(关闭的),若要恢复口令需要开启这 ...
- BZOJ-2257:瓶子和燃料(裴蜀定理)
jyy就一直想着尽快回地球,可惜他飞船的燃料不够了. 有一天他又去向火星人要燃料,这次火星人答应了,要jyy用飞船上的瓶子来换.jyy的飞船上共有 N个瓶子(1<=N<=1000) ,经过 ...
- SPOJcot2 Count on a tree II (树上莫队)
You are given a tree with N nodes. The tree nodes are numbered from 1 to N. Each node has an integer ...
- windows切换到谷歌浏览器黑屏问题
打开谷歌浏览器,找到右上角,点击设置,如下: 点击高级设置,如下: 关闭使用硬件加速模式,重新打开浏览器,即可.
- poj1236学校网络——连通块
题目:http://poj.org/problem?id=1236 通过传输文件的特点可以看出要先求强联通分量,缩点: 问题1:即缩点后入度为0的点,从它们开始传文件可以传给所有学校: 问题2:对于所 ...
- HDU2087(KMP入门题)
剪花布条 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- 升级后,使用dynamic报错
程序升级为.NET 4.0后,在程序中使用dynamic时出现下列错误 错误 5 预定义的类型“Microsoft.CSharp.RuntimeBinder.Binder”未定义或未导入错误 4 找不 ...
- const用在成员函数之后的情况
常成员函数 使用const关键字进行说明的成员函数,称为常成员函数.只有常成员函数才有资格操作常量或常对象,没有使用const关键字说明的成员函数不能用来操作常对象.常成员函数说明格式 ...