Python可以做:数据统计、爬虫、机器学习、人工智能… 还有Web开发;本文主要内容即以Python为基础进行简单Web应用开发;
pip install Django==3.0.8
,3.0.8是目前正是发布的最新版本;安装成功,控制台输出:
Successfully installed Django-3.0.8 asgiref-3.2.10 sqlparse-0.3.1
现在打开Jupyter Notebook:新建一个python3的文件
# 测试Django安装情况
import django
print(django.get_version())
控制台输出:
3.0.8
此外,还可以通过命令:
git clone https://github.com/django/django.git
在django目录下执行:
pip install -e ./django
这样会安装Django开发中的最新版本;
切换到项目文件夹下,执行命令:
django-admin startproject mysite1
或
django-admin startproject mysite1 .
会新建一个mysite1文件夹,mysite1子目录里的内容,就是我们创建的项目内容:
mysite1
manage.py
mysite1
__init__.py // 有了这个文件的存在 当前目录就变成了一个Python包(package)
asgi.py
settings.py
urls.py
wsgi.py
创建项目时用到的django-admin.py,它是Django的任务管理命令行工具,Django安装后保存在安装目录的/bin下:/Users/huaqiang/anaconda3/lib/python3.7/site-packages/django/bin/django-admin.py
django-admin命令的帮助信息和所支持的命令行参数:
$ django-admin
Type 'django-admin help ' for help on a specific subcommand.
Available subcommands:
[django]
check
compilemessages
createcachetable
dbshell
diffsettings
dumpdata
flush
inspectdb
loaddata
makemessages
makemigrations
migrate
runserver
sendtestemail
shell
showmigrations
sqlflush
sqlmigrate
sqlsequencereset
squashmigrations
startapp
startproject
test
testserver
执行命令:
python manage.py runserver
报了一个小错误:
You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
执行提示命令:
python manage.py migrate
再次运行,会在本机http://127.0.0.1:8000/
启动服务,在浏览器访问即可看到网站的基本样子,要把它变成一个优秀的网站,还需要不断优化;按CTRL+C即可退出;
The install worked successfully! Congratulations!
You are seeing this page because DEBUG=True is in your settings file and you have not configured any URLs
项目有了,网站也有了,现在需要实现网站具体的功能,在Django中,这些功能称为“应用”(application);
创建应用:
ls
:会看到除了原来的2个基础文件,多了一个db.sqlite3$ ls
db.sqlite3 manage.py mysite1
python manage.py startapp blog
(或 django-admin startapp blog
),然后执行ls
:目录中多了一个blog目录,而且目录中已经有了默认的文件和目录$ python manage.py startapp blog
$ ls
blog db.sqlite3 manage.py mysite1
blog
__init__.py
admin.py
apps.py
migrations
__init__.py
models.py
tests.py
views.py
blog就是在项目mysite1中新建的一个应用:
rm -r blog
,可以删除blog应用;$ rm -r blog
$ ls
db.sqlite3 manage.py mysite1
$ django-admin startapp blog
$ ls
blog db.sqlite3 manage.py mysite1
根目录:manage.py
$ python manage.py
Type 'manage.py help ' for help on a specific subcommand.
Available subcommands:
[auth]
changepassword
createsuperuser
[contenttypes]
remove_stale_contenttypes
[django]
check
compilemessages
createcachetable
dbshell
diffsettings
dumpdata
flush
inspectdb
loaddata
makemessages
makemigrations
migrate
sendtestemail
shell
showmigrations
sqlflush
sqlmigrate
sqlsequencereset
squashmigrations
startapp
startproject
test
testserver
[sessions]
clearsessions
[staticfiles]
collectstatic
findstatic
runserver
根目录:mysite1
settings.py
:包含了项目的初始化配置,可针对整个项目进行有关参数配置,如数据库配置、添加应用等;urls.py
:这是一个URL配置表文件,主要是将URL映射到应用程序上;
wsgi.py
:Web Server Gateway Interface,是Python所选择的服务器和应用标准,Django也会使用;该文件定义了我们所创建的项目都是WSGI应用;asgi.py
:“WSGI是基于HTTP协议模式的,不支持WebSocket,而ASGI的诞生则是为了解决Python常用的WSGI不支持当前Web开发中的一些新的协议标准。同时,ASGI对于WSGI原有的模式的支持和WebSocket的扩展,即ASGI是WSGI的扩展”,参考WSGI&ASGI__pycache__
:运行runserver命令后就会出现该文件夹;文件以.pyc结尾,都是编译好的文件;根目录:blog
admin.py
:可在此文件中,自定义Django管理工具,如设置在管理界面能够管理的项目,或通过重新自定义与系统管理有关的类对象,向管理功能增加新的内容;apps.py
:包含对应用的配置,如为管理功能提供一个合适的应用名称;migrations
:该目录用于存储应用的数据库表结构的指令,通过这些指令可以修改和创建数据库,从而在models.py模型类和数据库表之间迁移;models.py
:这是应用的数据模型,每个Django的应用都应该有一个models.py文件,虽然文件可以为空,但不宜删除;tests.py
:此文件中可以编写测试文档 来测试应用;views.py
:重要文件,用于保存响应各种请求的函数或类;
根目录:db.sqlite3
./mysite/settings.py
中配置生成;目前只创建了应用,还未将应用注册到项目中,暂时也无法访问;
./mysite/settings.py
是主管信息注册(各类信息声明)的文件,其中主要内容说明如下:
django.contrib.admin
就是针对项目后台管理的应用;可以把blog配置到这里;INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',# 配置新创建的blog应用
]
LANGUAGE_CODE='zh-hans'
;Asia/Shanghai
;开发模式下:
python manage.py runserver
生产模式:
diango-admin startproject projectname
命令创建一个Django项目;python manage.py startapp appname
命令,也可以使用django-amdin startapp appname
命令;settings.py
,要么是空文件,仅仅是为了占据一个位置而已,如应用里面的views.py
、models.py
等;settings.py
文件的INSTALLED_APPS
中进行声明,告诉Django这个应用是本项目的一部分。Django将很多默认的功能(比如用户管理功能)视为一个应用;此外,Django是一个开放的系统,任何人都可以开发第三方应用,这些第三方应用通常用于解决某个常见的问题,开发者在项目中使用第三方应用的主要目的就是节省时间、快速开发;这些第三方应用如果要在项目中使用,也要在settings.py
的INSTALLED_APPS
中注册后才能生效。