前言:书接上回,认识了Python项目环境,那么开始做一些案例了,笔者是Java出身,接触的也大都是web项目,那么Python的web项目有哪些呢?了解了一下有很多,37个之多,有 Django 框架 Flask 框架Pyramid 框架web.py 框架 Tornado 框架TurboGears 框架...各种各样吧。所以学习的话也是推荐排名靠前的,各个框架的优缺点不做展开讲解
目录总结图
安装django可以在两种环境安装,前文已经说过,可以在全局环境下安装,也可以在激活的虚拟环境下安装。
pip install django
安装之后查看环境目录
c:\python
- python.exe
- Scripts
- pip.exe
- django-admin.exe 【工具,创建django项目中的文件和文件夹】
- Lib
- 内置模块
- site-packages
- openpyxl
- python-docx
- flask
- django 【框架的源码】
django中项目会有一些默认的文件和默认的文件夹。
打开终端。激活虚拟环境,进入到myenv目录下的Scripts文件夹,输入activate即可
使用django-admin命令创建项目
django-admin startproject HelloWorld
使用IDE创建也是可以的,根据工具进行创建
特殊说明:
命令行,创建的项目是标准的。
使用 django-admin 来创建 HelloWorld 项目:
django-admin startproject HelloWorld
创建完成后我们可以查看下项目的目录结构:
默认项目的文件介绍:
HelloWorld
├── manage.py 【项目的管理,启动项目、创建app、数据管理】【不要动】【***常常用***】
└── HelloWorld
├── __init__.py
├── settings.py 【项目配置】 【***常常修改***】
├── urls.py 【URL和函数的对应关系】【***常常修改***】
├── asgi.py 【接收网络请求】【不要动】
└── wsgi.py 【接收网络请求】【不要动】
目录说明:
各文件和目录解释:
外层的HelloWorld/目录与Django无关,只是你项目的容器,可以任意重命名。
manage.py:一个命令行工具,管理Django的交互脚本。
内层的HelloWorld/目录是真正的项目文件包裹目录,它的名字是你引用内部文件的Python包名,例如:HelloWorld.urls。
HelloWorld/init.py:一个定义包的空文件。
HelloWorld/settings.py:项目的配置文件。非常重要!
HelloWorld/urls.py:路由文件,所有的任务都是从这里开始分配,相当于Django驱动站点的目录。非常重要!
HelloWorld/wsgi.py:一个基于WSGI的web服务器进入点,提供底层的网络通信功能,通常不用关心。
HelloWorld/asgi.py:一个基于ASGI的web服务器进入点,提供异步的网络通信功能,通常不用关心。
回到项目根目录下HelloWorld 运行
python manage.py runserver
Django会以127.0.0.1:8000这个默认配置启动开发服务器。如果你想指定端口,请在命令中显示给出:python manage.py runserver 8080
如果想修改服务器的ip地址,请按下面的方式运行命令:python manage.py runserver 0:8000
0 是 0.0.0.0 的简写,Django将运行在0.0.0.0:8000上,整个局域网内都将可以访问站点,而不只是是本机(这其中可能还需要做一些配置和网络测试)
访问地址会有什么?
创建应用,在 Django 中,每一个应用(app)都是一个 Python 包,并且遵循着相同的约定,app的存放位置可以是任何地点,但是通常都将它们放在与manage.py脚本同级的目录下,这样方便导入文件。
进入HelloWorld 项目根目录,确保与manage.py文件处于同一级,输入下述命令:
python manage.py startapp booktest 或者 django-admin startapp myapp
生成的目录结构如下
│ admin.py [固定,不用动] django默认提供了admin后台管理
│ apps.py [固定,不用动] app启动类
│ models.py 【*** 重要 ****】对数据库操作
│ tests.py [固定,不用动] 单元测试
│ views.py 【*** 重要 ****】 函数
│ __init__.py
└───migrations [固定,不用动] 数据库变更记录
__init__.py
如果想要把应用在这个项目中跑起来需要将应用添加到项目中,
注意:
还是这个文件,再找到 TEMPLATES项,添加DIRS
from django.db import models
# Create your models here.
class BlogPost(models.Model):
title = models.CharField(max_length=150) #博客的标题
body = models.TextField() #博客正文
timestamp = models.DateTimeField() #博客创建时间
如果使用默认的SQlite:
打开HelloWorld 目录下的settings.py文件,找到DATABASES元组,如下图所示,默认使用SQlite。
如果使用MySQL数据库:
更改mypro目录下的settings.py文件,找到DATABASES元组,改为:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', #改为MySQL数据库
'NAME': 'mydb', #数据库名称
'USER': 'root', #数据库用户名
'PASSWORD': '123abc', #数据库用户密码
'HOST': '127.0.0.1', #主机地址
'PORT': '3306', #端口号
}
}
在Django中使用MySQL数据库之前,要先确保已经建立了数据库mydb,并且上图使用的用户名和密码是已经存在的。
还需在项目mypro中的_init_.py文件做修改,
先下载模块pymysql,命令为:
pip install pymysql
首先创建数据库表,生成编辑文件(根据模型类生成编译文件)命令如下:
python manage.py makemigrations
根据编译文件去创建数据库去生成表)然后执行迁移,命令如下:
python manage.py migrate
这里生成的表,有系统自带的,还有我们自己创建的,自己去找
Python默认的数据库sqlite3就创建出来了
使用Navicat连接查看
如果连接的是mysql则迁移之后在mysql库中也创建了表
此处改为中国化(亚洲/上海时区)打开helloworld项目下的settings.py文件,找到如下设置
修改以下两项:
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
在Terminal命令行输入:
python manage.py createsuperuser
按照提示一步步输入即可,密码过于简单的会进行提示。
admin为自动后台管理,再次打开settings.py文件,找到INSTALLED_APPS这个元组,观察其第一行的‘django.contirb.admin'是否被注释(旧版好像会被注释,需要自己去掉注释,新版不会)。
确认admin设置正确后,需要添加在admin页面显示的模型,即注册BlogPost。打开booktest下的admin,py文件
添加以下代码,这样admin就可以管理已经注册的对象:
from django.contrib import admin #导入admin
from booktest import models #导入数据模型
admin.site.register(models.BlogPost) #使用admin注册BlogPost类
python manage.py runserver
打开浏览器,输入链接:http://127.0.0.1:8000/admin
注意:此时链接地址稍有改变,需要进入admin。
注意,如果你的blog界面此时没有添加的类,可能的问题为:1.没有在settings.py的INSTALLED_APPS中添加应用。2.应用的models.py中有错误 。3.没有在admin.py中进行模型注册。
然后可以进行其它操作了
下一篇分享Django模板使用笔记呢还是Django集成Redis笔记呢?留个悬念哈哈哈