资讯专栏INFORMATION COLUMN

python入门 django入门 (一)

hzc / 2797人阅读

摘要:本人年开发经验,现就职于电信,因工作需要学习,记录自己的学习记录。

本人java10年开发经验,现就职于电信,因工作需要学习python,记录自己的学习记录。后面也会持续分享真实工作经验,及项目

1.mvc vs mvt

mvc:

m:model数据模型(将数据从数据库查询出来,再加工成前台需要的数据,统称数据模型层)

c:controller控制层(接受请求,接受请求数据,返回数据的代码层)

v:视图层(展示给用户看的层,比如网页、app、显示器等)

mvt:

m:同上

v:同上面的c

t:template模板的意思(比如京东浏览任何一个商品的详情页都是类似的页面只是数据不同,就可以写一个页面然后填充不同的数据,这个相同的页面就是模板)

2.虚拟环境

python为了不同项目之间版本不冲突,创建了虚拟环境的概念

问题:如果在一台电脑上, 想开发多个不同的项目, 需要用到同一个包的不同版本, 如果使用上面的命令, 在同一个目录下安装或者更新, 新版本会覆盖以前的版本, 其它的项目就无法运行了.解决方案:虚拟环境作用:虚拟环境可以搭建独立的python运行环境, 使得单个项目的运行环境与其它项目互不影响.

虚拟环境安装:

pip install virtualenvpip install virtualenvwrapper可以使用豆瓣的镜像pip install virtualen -i https://pypi.douban.com/simple 

创建虚拟环境的命令:

mkvirtualenv -p python3 虚拟环境名称例 :mkvirtualenv -p python3 py3_django

进入虚拟环境:

workon py3_django

删除虚拟环境的命令 :

rmvirtualenv 虚拟环境名称删除的时候需要先退出虚拟环境先退出:deactivate再删除:rmvirtualenv py3_django

3.安装包

项目的运行需要各种各样的包,都需要安装

进入虚拟环境后安装命令:

pip install 模块名 -i https://pypi.douban.com/simple(这里使用豆瓣镜像)例如: pip install django==2.1.1 -i https://pypi.douban.com/simple 如果不指定版本pip install django -i https://pypi.douban.com/simple  默认安装最新版本卸载:pip uninstall xxxx查看已安装列表:pip list

4.创建django项目

django-admin startproject daping(项目名)

使用pycharm打开

为项目配置虚拟环境:

运行项目:

可以使用cmd进入项目目录运行也可以点击pycharm左下角的terminal运行(运行的时候需要进入虚拟环境)python manage.py runserver ip:端口或:python manage.py runserver可以不写IP和端口,默认IP是127.0.0.1,默认端口为8000。启动后在页面访问127.0.0.1:8000有个小火箭就是成功了

5.创建应用

每个项目都会有很多模块,比如商城有支付、物流等,而支付跟物流显然都是很多项目可以共用的,

为了达到复用的目的,python提出了应用的概念,把每个模块多带带创建为一个应用,就可以很方便的达到复用的目的

python manage.py startapp 子应用名称      tips:如果在其他目录下可以通过相对路径找到manage.py例如:python manage.py startapp pay (在大平的目录下创建了一个名为pay的应用)

创建了子应用,需要在项目的全局配置中加入子应用

setting----INSTALLED_APPS---找到最后一行添加应用名称

6.模型ORM

ORM:O:Object实体类R:relatinal关系型数据库(mysql)M:mapping也就是mysql有个表叫student  有id name列那么在项目中应该有个student类 属性有id name就把这个数据库到项目实体类的映射关系称为orm

在pay应用的models.py中新建实体类:

from django.db import models# Create your models here.class Teacher(models.Model):    name = models.CharField(max_length=10)# 实体类可以继承Modelclass Student(models.Model):    # 创建字段,字段类型...    name = models.CharField(max_length=10)    # 外键指定学生的老师    teacher = models.ForeignKey(Teacher,on_delete=models.CASCADE)
on_delete=None, # 删除关联表中的数据时,当前表与其关联的field的行为on_delete=models.CASCADE, # 删除关联数据,与之关联也删除on_delete=models.DO_NOTHING, # 删除关联数据,什么也不做on_delete=models.PROTECT, # 删除关联数据,引发错误ProtectedError# models.ForeignKey("关联表", on_delete=models.SET_NULL, blank=True, null=True)on_delete=models.SET_NULL, # 删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空,一对一同理)# models.ForeignKey("关联表", on_delete=models.SET_DEFAULT, default="默认值")on_delete=models.SET_DEFAULT, # 删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值,一对一同理)on_delete=models.SET, # 删除关联数据,a. 与之关联的值设置为指定值,设置:models.SET(值)b. 与之关联的值设置为可执行对象的返回值,设置:models.SET(可执行对象)
类型说明
AutoField自动增长的IntegerField,通常不用指定,不指定时Django会自动创建属性名为id的自动增长属性
BooleanField布尔字段,值为True或False
NullBooleanField支持Null、True、False三种值
CharField字符串,参数max_length表示最大字符个数
TextField大文本字段,一般超过4000个字符时使用
IntegerField整数
DecimalField十进制浮点数, 参数max_digits表示总位数, 参数decimal_places表示小数位数
FloatField浮点数
DateField日期, 参数auto_now表示每次保存对象时,自动设置该字段为当前时间,用于"最后一次修改"的时间戳,它总是使用当前日期,默认为False; 参数auto_now_add表示当对象第一次被创建时自动设置当前时间,用于创建的时间戳,它总是使用当前日期,默认为False; 参数auto_now_add和auto_now是相互排斥的,组合将会发生错误
TimeField时间,参数同DateField
DateTimeField日期时间,参数同DateField
FileField上传文件字段
ImageField继承于FileField,对上传的内容进行校验,确保是有效的图片

选项 说明
null 如果为True,表示允许为空,默认值是False
blank 如果为True,则该字段允许为空白,默认值是False
db_column 字段的名称,如果未指定,则使用属性的名称
db_index 若值为True, 则在表中会为此字段创建索引,默认值是False
default 默认
primary_key 若为True,则该字段会成为模型的主键字段,默认值是False,一般作为AutoField的选项使用
unique 如果为True, 这个字段在表中必须有唯一值,默认值是False

修改setting配置文件,找到如下代码改为自己的mysql链接:

DATABASES = {    "default":        {            "ENGINE": "django.db.backends.mysql",            "NAME": "junge",  # 数据库名字 需要在mysql创建对应的库            "USER": "root",            "PASSWORD": "123456",            "HOST": "127.0.0.1",            "PORT": "3306",        }}

链接mysql需要安装mysqlclient,如下命令安装

pip install mysqlclient -i https://pypi.douban.com/simple 

模型迁移 (建表)

生成迁移文件:根据模型类生成创建表的语句python manage.py makemigrationstips:会在migrations下面生成0001_initial.py文件,里面有表的创建语句,00001也记录了版本号,记录了每次对表的改变执行迁移:根据第一步生成的语句在数据库中创建表python manage.py migrate执行完毕就会在mysql中生成对应的表

7.后台管理系统(站点管理)

修改setting.py里面的,语言跟时区

LANGUAGE_CODE = "en-us"TIME_ZONE = "UTC"修改为:LANGUAGE_CODE = "zh-Hans"TIME_ZONE = "Asia/Shanghai"

后台管理系统需要账号登录,先创建用户:

  python manage.py createsuperuser  按照提示输入用户名密码,邮箱随便输入    重置密码python manager.py changepassword 用户名

创建好了用户启动项目,浏览器访问站点:

python manage.py runserver 启动项目登陆站点 :http://127.0.0.1:8000/admin

想要我们创建的实体类被站点管理,需要注册:

在admin.py中输入

from django.contrib import adminfrom .models import Student, Teacher# Register your models here.admin.site.register(Student)admin.site.register(Teacher)

再次访问:

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/123515.html

相关文章

  • 如何成为名优秀的程序员

    摘要:前言罗子雄如何成为一名优秀设计师董明伟工程师的入门和进阶董明伟基于自己实践讲的知乎为新人提供了很多实用建议,他推荐的罗子雄如何成为一名优秀设计师的演讲讲的非常好,总结了设计师从入门到提高的优秀实践。 前言 罗子雄:如何成为一名优秀设计师 董明伟:Python 工程师的入门和进阶 董明伟基于自己实践讲的知乎live为Python新人提供了很多实用建议,他推荐的罗子雄:如何成为一名优秀...

    keelii 评论0 收藏0
  • Python入门资料大全(更新ing)

    摘要:在线挑战,还没用过,貌似现在对英文资料心里还有种抵触,必须克服实验楼研发工程师包含了等学习课程。书的作者就是开发了用于数据分析的著名开源库的作者英文资料,对数据分析中要用到的一些库,等等做了简要介绍。形式的资料,示例代码都很全。 showImg(https://segmentfault.com/img/remote/1460000004852849); 一、说明 面对网络上纷繁复杂的资...

    wuaiqiu 评论0 收藏0
  • Django入门(1)

    摘要:入门项目创建和创建准备环境项目创建创建进入项目路径创建路由文件项目结构如下项目注册在此处注册项目路由注册注册的此时,一个完整的流程就好了修改的路由写一个视图函数函数视图的定义 Django入门 项目创建和APP创建 准备环境 python3 virtualenv pip3 pip3 install django==1.1 项目创建,APP创建 django-admin startpr...

    wwq0327 评论0 收藏0

发表评论

0条评论

hzc

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<