python⽼师武_django武沛齐⽼师-最后⼀篇随笔安装
卸载
pip uninstall django
创建 django 项⽬
django-admin startproject 项⽬名
django-admin startproject victory
运⾏ django 项⽬
cd victory
python manage.py runserver
创建 app
python manage.py startapp app名称
python manage.py startapp app01
urls ⽂件
urlpatterns=[ ] 对应 url 映射的列表
urlpatterns=[
url(r'^⽹址名称/', 包模块.函数名),
url(r'^⽹址名称/', 函数名),
]
wsgi ⼀套规则,接⼝,创建 socket
产品上线不使⽤默认的 wsgi , 使⽤ uwsgi+nginx
manage.py 管理 django 程序
settings 配置⽂件
app 注册
app 名称.apps.app 名称Config 或 app 名称
app01.apps.App01Config 或 app01
templates 模板注册'DIRS': [os.path.join(BASE_DIR, 'templates')],
配置静态⽂件夹static创建static静态⽂件夹
STATICFILES_DIRS=(
os.path.join(BASE_DIR,'static'),
)
设置中⽂
LANGUAGE_CODE= 'zh-hans'设置时区
TIME_ZONE= 'Asia/Shanghai'设置数据库为 mysql (注:先安装 mysqlclient, pip install mysqlclient)
DATABASES={'default': {'ENGINE': 'django.sql','NAME': '数据库名称','USER':'⽤户名','PASSWORD':'密码','HOST':'127.0.0.1','PORT':'3306'}
}
DATABASES={'default': {'ENGINE': 'django.sql','NAME':
'app02','USER':'root','PASSWORD':'root','HOST':'127.0.0.1','PORT':'3306'}
}
ORM 对象关系映射,创建数据库表不需要使⽤select , insert 语句了
数据库迁移
python manage.py makemigrations
python manage.py migrate
app ⽬录
migrations 记录做过哪些修改数据表结构的操作
__init__ ⽂件,python3 可以删除,python2 不可以删除
python2 默认 不带 __init__ ⽂件为普通⽂件夹,导⼊会报错
admin 后台管理
在 admin 中,导⼊ app 的 models ⽂件fromapp01 import models
将 models ⾥⾯的数据表进⾏注册
ister(models.UserInfo)
ister(models.UserType)
两张表内容如下classUserType(models.Model):
name= models.CharField(max_length=32)classUserInfo(models.Model):
username= models.CharField(max_length=32)
pwd= models.CharField(max_length=32)
email= models.CharField(max_length=32)
user_type= models.ForeignKey('UserType')
# 使⽤''将类名包裹,进⾏创建外键
创建超级⽤户
python manage.py createsuperuser
⽰例:
⽤户名 hany
密码 hany12345.
超级⽤户登录后,可以对数据表增加数据等操作
apps 配置当前 app
models ORM 操作,通过命令创建数据库表结构
tests 单元测试
views 业务逻辑⽂件,写函数
伪装数据库
项⽬的 __init__ ⽂件下
import pymysql
pymysql.install_as_MySQLdb()
⽣命周期
⽤户发送请求到路由系统,如果匹配成功,执⾏相对应的 views 中的函数
到数据库中取出数据,在模板 html 上进⾏页⾯渲染数据 返回到⽤户的浏览器上urls 操作
url(r'^路由映射/', views.函数名),
url(r'^register/', ister),
url(r'^路由映射-(?P\d+).html', views.函数名),
url(r'^detail-(?P\d+).html', views.detail),
url(r'路由映射',include("app名称.urls"))
url(r'app02',include("app02.urls"))
注:include 内参数加引号,urls 需要⾃⼰创建
在⽤户创建的 urls 中,继续进⾏地址映射,写在 urlpatterns=[ ]中
app 不要忘记在 settings 中进⾏注册
models 操作
创建数据表时,继承 models.Model
⽰例classUserInfo(models.Model)
创建字符串类型数据 models.CharField
⽰例
username= models.CharField(max_length=32)
id 主键会⾃动创建,并递增
使⽤ AutoField,并且声明主键 primary_key=True 可以不让系统创建 id 列⽰例
uid= models.AutoField(primary_key=True)
字段参数null字段是否为空default默认值
⽰例
code= models.CharField(max_length=32,null=True,default="SA") primary_key 主键
db_column 列名
db_index 索引 , unique 唯⼀索引
unique_for_date 对⽇期做索引,unique_for_month 对⽉做索引, unique_for_year 对年做索引
auto_now=True 创建时⽣成时间
⽰例
ctime= models.DateField(auto_now=True,null=True)
auto_now_add=True 修改时⾃动更新时间
choice 选项
⽰例 , choices 为 ⼀个嵌套的元组对象
user_type_choices=(
(1,'super man'),
(2,'common man'),
(3,'man'),
)
user_type_id= models.IntegerField(choices=user_type_choices,default=2)
verbose_name 备注字段
editable 字段是否可以被编辑
help_text 字段输⼊提⽰
validators ⾃定义错误信息
to_field 与哪⼀列进⾏关联
创建整数类型数据 models.IntegerField
⽰例
user_type_id= models.IntegerField(choices=user_type_choices,default=2)
外键关联 models.ForeignKey
⽰例 第⼀个参数为类名,uid 为关联的字段
usergroup= models.ForeignKey('UserGroup',to_field='uid')
会⾃动⽣成 usergroup_id 列,usergroup 为对象,可以使⽤ usergroup.uid 进⾏获取外联表的数据
创建 ip
⽰例 , protocol默认为'both'ip= models.GenericIPAddressField(protocol="ipv4",db_index=True)多对多 , 不能加额外字段列
models.ManyToManyField('类名')
⼀对多,多对多⽰例classBusiness(models.Model):
caption= models.CharField(max_length=32)
code= models.CharField(max_length=32,null=True,default="SA")classHost(models.Model): nid= models.AutoField(primary_key=True)
hostname= models.CharField(max_length=32,db_index=True)
ip= models.GenericIPAddressField(protocol="ipv4",db_index=True)
port=models.IntegerField()
b= models.ForeignKey(to="Business", to_field='id')classApplication(models.Model): name= models.CharField(max_length=32)
r= models.ManyToManyField("Host")
注:会⾃动创建⼀个新的表,内部为其他表的 id 主键
obj= (id=1)django admin 自定义页面
增加数据
删除数据
更新数据
多对多 , ⾃定义创建第三张表 , 可以⾃⼰定义第三张表的字段
⽰例classHostApp(models.Model):
hobj= models.ForeignKey(to='Host',to_field='nid')
aobj= models.ForeignKey(to='Application',to_field='id')
status= models.CharField(max_length=32)
增加数据
ate(hobj_id='xxx',aobj='xxx',status='xxx')
html 操作
导⼊ jquery导⼊静态⽂件使⽤ {{ 变量名 }} 进⾏显⽰变量{{ error_msg }}
for循环
{% for 对象 in 传递过来字典的键 %}
{{ 对象 }}
{% endfor %}
遍历字典中的键
{% for num in user_num.keys %}
{{ num }}
{% endfor %}
遍历字典中的值

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。