以下内容是个人学习随手记录,就是介绍了下简单的使用;
欢迎大家吐槽,接下来就是激情的时刻,准备好啤酒饮料矿泉水,开整!!!
-----------------------------------------------------------------------------------------------------------------------------Django框架的实现都是基于HTTP协议的!
HTTP:超文本传输协议:
HTTP请求:
1)请求头
2)消息报头
3)请求正文
HTTP响应码:
(1)1xx:信息响应类,表示接收到请求并且继续处理
(2)2xx:处理成功相应类,表示动作成功被接收、理解和接受 常见的是200
(3)3xx:重定向相应类
(4)4xx:客户端错误 常见的是404
(5)5xx:客户端错误,服务器内部错误
响应正文:比如网页源代码
Django框架:采用的模式是MTV
M:模型 models 创建数据表使用
T:视图 templates 例如前台html页面
V:控制器 views 业务逻辑页
使用Django创建Web网站工程流程:
一、settings.py文件中:数据库的配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME':'restframework',
'USER':'root',
'PASSWORD':'111111',
'HOST':'127.0.0.1'
}
}
LANGUAGE_CODE = 'en-us' # 语言配置
TIME_ZONE = 'UTC' # 时区设置
USE_TZ = False # 让设置的时区生效
# 请求静态文件的路径
STATIC_URL = '/static/'
# 静态文件存放的路径
STATICFILES_DIRS = (
os.path.join(BASE_DIR,'static')
)
# 登录使用访问的路径,pro01为子工程的名字
LOGIN_URL = '/pro01/login/'
# 上传文件的URL访问路径
MEDIA_URL = '/pro01/upload/'
# 上传文件的路径
MEDIA_ROOT = os.path.join(BASE_DIR,'upload')
from django.contrib import admin
from pro01 import urls as pro01_urls
urlpatterns = [
url(r'^admin/', include(admin.site.urls,)),
url(r'^pro01/',include(pro01_urls,namespace='pro01')),
]
二、主文件夹下urls.py文件中的配置,路由(url)的配置或者分发
例:
from django.conf.urls import include, url
from django.contrib import admin
from pro01 import urls as pro01_urls
urlpatterns = [
url(r'^admin/', include(admin.site.urls,)),
url(r'^pro01/',include(pro01_urls,namespace='pro01')),
]
三、子工程的urls.py文件的配置,是访问rul的地址和业务逻辑的关联,
例:
from django.conf.urls import url
import views
urlpatterns = [
url(r'^$', views.index,name='index') # 首页路径配置
url(r'^article/$',views.article,name='article') # 子页路径配置
]
四、子工程的views种的业务逻辑配置与url和模版template文件夹种的模版文件要相互对应
例:
#coding:utf8
from django.shortcuts import render
import datetime
# Create your views here.
def index(request):
langeuage = ['英语','汉语']
lang1 = []
var1 = '你大爷'
class Human():
name = '张三'
age = 18
def sayhello(self):
return 'hello python'
human = Human()
var2 = 'Alice'
time1 = datetime.datetime.now()
lin = 'dajfj diiow oiajif'
context = {
'langeuage':langeuage,
'var1':var1,
'human':human,
'var2':var2,
'time1':time1,
'lin':lin,
}
return render(request,'app01/index.html',context)
五、模版文件template文件夹中的简单使用案例:
{% load myfilters %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>index</title>
</head>
<body>
{#if嵌套for#}
{% if lang1 %}
{% for foo in langeuage %}
{{ foo }}
{% endfor %}
{% else %}
没有语言
{% endif %}
<hr>
{#单变量#}
{{ var1 }}
<hr>
{{ human.name }}----{{ human.age }}
<hr>
{{ var2 | upper }}
<hr>
{{ time1 | date:'Y-m-d' }}
<hr>
{{ lin }}
<hr>
{{ lin | filter1 }}
</body>
</html>
六、子项目models.py文件种的使用案例:每一个类就对应数据库中的一个表
例:
#coding:utf8
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class Student(models.Model): # 学生表
name = models.CharField(verbose_name='姓名',max_length=32)
age = models.IntegerField(verbose_name='年龄')
gender = models.BooleanField(verbose_name='性别')
score = models.DecimalField(verbose_name='成绩',max_digits=5,decimal_places=2)
email = models.EmailField(verbose_name='邮箱',null=True,blank=True)
add_time = models.DateTimeField(verbose_name='添加时间',null=True)
# 外键
gra = models.ForeignKey('Grade')
# 后台数据表的名称
def __unicode__(self):
return self.name
class Meta:
verbose_name_plural = verbose_name = '学生'
class Grade(models.Model): # 班级表
name = models.CharField(verbose_name='班名',max_length=64)
def __unicode__(self):
return self.name
class Meta:
verbose_name_plural = verbose_name = '班级'
#用户扩展信息表
class UserProfile(models.Model):
nick = models.CharField(max_length=30) # 昵称
user = models.OneToOneField(User) # 跟User表建立一对一的关系
friends = models.ManyToManyField('self',blank=True) # 跟自己建立一个多对多的关系
def __unicode__(self):
return self.nick
七、子项目中admin.py文件,主要用来将数据库的表渲染后django的admin后台:
例:
#coding:utf8
from django.contrib import admin
import models
# Register your models here.
# 表渲染到后台
admin.site.register(models.Student)
admin.site.register(models.Grade)
admin.site.register(models.Userprofile)
搞笑一则:能动手尽量别吵吵