一.准备虚拟环境

1)安装 virtualenv

pip install virtualenv

2)virtualenvwrapper

pip install virtualenvwrapper-win
(windows 下 为:pip install virtualenvwrapper-win)

3)设置虚拟环境目录

默认创建的虚拟环境位于C:\Users\username\envs,可以通过环境变量 WORKON_HOME 来定制。

通过计算机-->属性-->高级系统设置-->环境变量-->在系统变量中新建“变量名”:WORKON_HOME,变量值:“D:\envs”。

4)常用命令

常用命令:

(1)创建虚拟环境 mkvirtualenv 虚拟环境名称

(2)查看虚拟环境 lsvirtualenv或者workon

(3)进入虚拟环境 workon  虚拟环境名称

(4)退出虚拟环境 deactivate

(5)删除虚拟环境 rmvirtualenv 虚拟环境名称

(6) 查看虚拟环境下的安装包 pip list

5)创建Django项目的虚拟环境

C:\Users\Administrator>mkvirtualenv django01
created virtual environment CPython3.9.6.final.0-64 in 13066ms
creator CPython3Windows(dest=D:\envs\django01, clear=False, no_vcs_ignore=False, global=False)
seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=C:\Users\Administrator\AppData\Local\pypa\virtualenv)
added seed packages: pip==21.2.3, setuptools==57.4.0, wheel==0.37.0
activators BashActivator,BatchActivator,FishActivator,PowerShellActivator,PythonActivator (django01) C:\Users\Administrator>

6)为虚拟环境添加Django项目需要用到的包

pip install django
pip install pymysql

二.创建项目

1)切到要建项目的目录,用django-admin startproject XXX python manage.py startapp XXX 创建项目和app

d:\python项目>workon py_django

(py_django) d:\python项目>django-admin startproject django_01

(py_django) d:\python项目>cd django_01

(py_django) d:\python项目\django_01>python manage.py startapp bookshop

三.进入Pycharm

1)设置初始参数

1>settings.py

① 设置 时区和语言

②添加app

③设置数据库

mysql> create database django_01 charset = utf8;
Query OK, 1 row affected, 1 warning (0.04 sec)

在项目__init__.py中加上一下语句,不然会报错

import pymysql
pymysql.install_as_MySQLdb()
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?

④设置模板

在项目目录建 templates目录,并将模板信息加到设置文件

⑤设置主机地址便于外部计算机访问,默认为空,也就是只有127.0.0.1 能访问

ALLOWED_HOSTS = ['192.168.1.139']

2>ulrs.py  设置路由,最好在app中建一个新路由表,用于连接当前app 在主路由中导入include,加入一下代码,转向app路由,

from django.urls import path,include

path('',include('bookshop.urls'))

到这里 初步配置已经完成,可以在终端里启动服务器

(py_django) d:\python项目\django_01>python manage.py runserver

2)建模型

  • 模型类被定义在“应用/models.py”文件中
  • 模型类必须继承自Model类,位于包django.db.models中
  • 提示:对于重要数据使用逻辑删除

定义属性

  • Django根据属性的类型确定以下信息:
  • django会为表创建自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后django不会再创建自动增长的主键列
  • 默认创建的主键列属性为id,可以使用pk代替,pk全拼为primary key
  • 属性命名限制:
    • 不能是python的保留关键字
    • 不允许使用连续的下划线,这是由django的查询方式决定的,在第4节会详细讲解查询
  • 定义属性时需要指定字段类型,通过字段类型的参数指定选项,语法如下:
属性=models.字段类型(选项)

字段类型

使用时需要引入django.db.models包,字段类型如下:

  • AutoField:自动增长的IntegerField,通常不用指定,不指定时Django会自动创建属性名为id的自动增长属性
  • BooleanField:布尔字段,值为True或False
  • NullBooleanField:支持Null、True、False三种值
  • CharField(max_length=字符长度):字符串
    • 参数max_length表示最大字符个数
  • TextField:大文本字段,一般超过4000个字符时使用
  • IntegerField:整数
  • DecimalField(max_digits=None, decimal_places=None):十进制浮点数
    • 参数max_digits表示总位数
    • 参数decimal_places表示小数位数
  • FloatField:浮点数
  • DateField[auto_now=False, auto_now_add=False]):日期
    • 参数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
  • 对比:null是数据库范畴的概念,blank是表单验证证范畴的
  • db_column:字段的名称,如果未指定,则使用属性的名称
  • db_index:若值为True, 则在表中会为此字段创建索引,默认值是False
  • default:默认值
  • primary_key:若为True,则该字段会成为模型的主键字段,默认值是False,一般作为AutoField的选项使用
  • unique:如果为True, 这个字段在表中必须有唯一值,默认值是False

关系字段类型

  • 关系型数据库的关系包括三种类型:

    • ForeignKey:一对多,将字段定义在多的一端中
    • ManyToManyField:多对多,将字段定义在两端中
    • OneToOneField:一对一,将字段定义在任意一端中

这里要注意在Django3.X 中要指定on_delete的值(一般设置为:models.CASCADE)    

    aparten = models.ForeignKey('Areas',on_delete=models.CASCADE)
  • 可以维护递归的关联关系,使用'self'指定,详见“自关联”
  • 由一到多的访问语法:
    对象.模型类小写_set
  • 由一到一的访问语法
    对象.模型类小写
  • 访问关联对象的id语法
    对象.属性_id
  • 数据表的默认名称为:
    <app_name>_<model_name>
  • 在模型类中定义类Meta,用于设置元信息,如使用db_table自定义表的名字
    class Meta:
db_table='XXXX'

  

3) 迁移

(py_django) d:\python项目\django_01>python manage.py makemigrations
Migrations for 'area':
area\migrations\0001_initial.py
- Create model AreaInfo
(py_django) d:\python项目\django_01>python manage.py migrate
Operations to perform:
Apply all migrations: admin, area, auth, bookshop, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying area.0001_initial... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying auth.0012_alter_user_first_name_max_length... OK
Applying bookshop.0001_initial... OK
Applying sessions.0001_initial... OK

Django边学边记—新手Django建项目各流程细节的更多相关文章

  1. Django边学边记——中间件

    特点 Django中的中间件是一个轻量级.底层的插件系统,可以介入Django的请求和响应处理过程,用于全局修改Django的输入或输出. 每个中间件组件负责做一些特定的功能.中间件全部注册在sett ...

  2. Django边学边记—静态文件

    概念 项目中的CSS.图片.js都是静态文件 一般会将静态文件放到一个单独的目录中,以方便管理 在html页面中调用时,也需要指定静态文件的路径,Django中提供了一种解析的方式配置静态文件路径 静 ...

  3. Django边学边记—模板

    功能 产生html,且不仅仅是一个html 包含: 静态内容:html,css,js 动态内容:模板语言 使用 一般使用 Django中提供的简写函数render调用模板 render(request ...

  4. Django边学边记—视图

    一. url (一)配置 在项目/settings.py中通过ROOT_URLCONF指定url配置 ROOT_URLCONF = 'XXXX.urls' 打开 项目/urls.py 配置 (二)语法 ...

  5. Django边学边记—模型查询

    查询集 两大特性 惰性执行:创建查询集不会访问数据库,直到调用数据时,才会访问数据库,调用数据的情况包括迭代.序列化.与if合用 缓存:查询集的结果被存下来之后,再次查询时会使用之前缓存的数据 返回列 ...

  6. Django边学边记--状态保持(cookie和session)

    Cookie 概念: Cookie,也叫Cookies,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密),好比会员卡或餐票. 特点: Cookie是由服务 ...

  7. web 框架的本质及自定义web框架 模板渲染jinja2 mvc 和 mtv框架 Django框架的下载安装 基于Django实现的一个简单示例

    Django基础一之web框架的本质 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基于Django实现的一个简单 ...

  8. Django学习笔记(18)——BBS+Blog项目开发(2)主体思路及流程

    这篇博客主要完成一个BBS+Blog项目,那么主要是模仿博客园的博客思路,使用Django框架进行练习. 准备:项目需求分析 在做一个项目的时候,我们首先做的就是谈清楚项目需求,功能需求,然后才开始写 ...

  9. Django+Nginx+Uwsgi(全网最全步骤工作原理流程与部署历程)

    一.必要前提 1.1 准备知识 django 一个基于python的开源web框架,请确保自己熟悉它的框架目录结构. uWSGI 一个基于自有的uwsgi协议.wsgi协议和http服务协议的web网 ...

随机推荐

  1. STM32—驱动RFID-RC522模块

    文章目录 一.S50(M1)卡介绍 1.S50(M1)卡基础知识 2.内部信息 3.存取控制 4.数据块的存取控制 5.控制块的存取控 6.工作原理 7.M1与读卡器的通信 二.RC522工程代码详解 ...

  2. redis的五大数据类型实现原理

    1.对象的类型与编码 Redis使用前面说的五大数据类型来表示键和值,每次在Redis数据库中创建一个键值对时,至少会创建两个对象,一个是键对象,一个是值对象,而Redis中的每个对象都是由 redi ...

  3. 熟悉而陌生的新朋友——IAsyncDisposable

    本文作者--句幽 在.NET Core 3.0的版本更新中,官方我们带来了一个新的接口 IAsyncDisposable. 小伙伴一看肯定就知道,它和.NET中原有的IDisposable接口肯定有着 ...

  4. 如何快速排查发现redis的bigkey?4种方案一次性给到你!

    本篇文章将以redis的bigkey为主题进行技术展开,通过从认识redis的高性能,bigkey的危害.存在原因.4种解决方案,到模拟实战演练的介绍方式,来跟大家一起认识.探讨和学习redis. 先 ...

  5. new和delete关键字

    new关键字创建出来的对象位于什么地方?很明显嘛,new关键字创建出来的对象一定位于堆空间,这种说法一定正确吗?本篇博客帮你揭开其神秘的面纱. 被忽略的事实new/delete的本质是C++预定义的操 ...

  6. 创建File类 及 this.getClass().getResource()方法 用到的文件路径的问题

    1 package test; 2 3 import java.io.*; 4 import java.util.Scanner; 5 6 public class TestResource { 7 ...

  7. Gradient checking

    所需文件:本地下载 Gradient Checking Welcome to the final assignment for this week! In this assignment you wi ...

  8. Java基础和常用框架的面试题

    前言 最近学校也催着找工作了,于是刷了一些面试题,学习了几篇大佬优秀的博客,总结了一些自认为重要的知识点:听不少职场前辈说,对于应届毕业生,面试时只要能说到核心重要的点,围绕这个点说一些自己的看法,面 ...

  9. 国内Git官网下载windows版本慢的问题,推荐一个国内镜像

    话不多说了,给你们镜像地址: https://npm.taobao.org/mirrors/git-for-windows/ 不用谢.点右边打赏个一毛钱,告诉我你来过        !_!

  10. vsftpd 参数说明

    2021-07-28 该文章为转载文章,非原创 参数作用# 是否允许匿名访问 [ 12行 ]anonymous_enable=[YES|NO]# 是否允许本地用户访问( /etc/passwd中的用户 ...