前言
本文针对"A Complete Beginner’s Guide to Django“系列文章进行学习,所做的笔记。
安装python环境
文中使用Virtualenv
进行Python
虚拟环境的安装,我这里使用pipenv
进行Python
环境的安装。
安装并配置pipenv
1
2
3
4
|
$ brew install python3 # 安装Python3
$ python3 -m pip install --upgrade --force-reinstall pip # 强制安装/重新安装pip
$ pip3 install pipenv --user # 在个人目录下安装pipenv
$ export PATH="${HOME}/Library/Python/3.7/bin:$PATH" #设置环境变量
|
在项目目录通过pipenv新建python环境
1
2
3
4
5
6
7
8
9
10
|
$ cd ~/Workspace/myproject # 到项目目录
$ pipenv install --three # 这里我们新建python3版本的虚拟环境
$ pipenv shell # 切换到新建的python环境
(myproject-Vk5xbkXh) # 如果有这个带括号的字符串,说明已经切换到了新建的python环境。
# 这个字符串是python虚拟环境的目录名,
# 是本项目目录名加上随机的字符串组成的。
$ which python
/Users/codepanda/.local/share/virtualenvs/myproject-Vk5xbkXh/bin/python
# python已经使用的是新建的python虚拟环境了
|
此时在项目的根目录会生成 Pipfile
和 Pipfile.lock
两个文件,这连个是社区拟定的依赖管理文件,用于替代过于简陋的 requirements.txt
文件。
安装Django包
1
|
$ pipenv install Django==2.2 # 安装指定版本的Django (2019年4月12日更新至2.2)
|
新建Django项目
新建一个Django项目
1
|
$ django-admin startproject myproject
|
此时的目录结构是:
1
2
3
4
5
6
7
8
9
10
|
myproject # 项目上级目录
├── Pipfile # pipenv包依赖管理文件
├── Pipfile.lock # pipenv包依赖管理文件
└── myproject # 项目目录
├── manage.py
└── myproject
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
|
初始项目中部分文件的作用
运行项目
1
2
3
4
|
$ cd myproject # 切换到项目中,manage.py文件所在的文件
$ pwd
/home/codepanda/Workspace/myproject/myproject
$ python manage.py runserver # 运行项目
|
在浏览器中输入 http://127.0.0.1:8000
可以看到项目首页
Django Apps
Django中的两个概念 app、 project :
- app: 应用,完成某件事情的Web应用程序。
- project: 项目,配置和应用程序的集合。一个项目可以由多个应用程序或一个应用程序组成。
新建一个应用
1
|
$ python manage.py startapp boards
|
此时,项目的目录结构
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
myproject
├── Pipfile
├── Pipfile.lock
└── myproject
├── boards
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── migrations
│ │ └── __init__.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
├── db.sqlite3
├── manage.py
└── myproject
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
|
- migrations:用于存储models.py文件变更引起的数据库变更的信息,保持数据库和models.py的同步。
- admin.py:django内置的应用Django Admin的配置文件。
- apps.py:应用本身的配置文件。
- models.py:定义应用程序数据实例的文件。MTV中的M。
- tests.py:用于编写当前应用单元测试的文件。
- views.py:处理Web应用程序请求(request)/响应(resopnse)的文件。MTV中的V。
将新建的 app 加入到项目中
settings.py
1
2
3
4
5
6
7
8
9
10
|
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'boards.apps.BoardsConfig', # 加入新应用
]
|
编写简单的应用
添加新的视图
views.py
1
2
3
4
|
from django.http import HttpResponse
def home(request):
return HttpResponse('Hello, World!')
|
将视图view和url链接起来
urls.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
from django.urls import path # Django 1.* 为 from django.conf.urls import url
# Django 2.* 若需要使用正则表达式,需要引入 re_path, 相当于 1.* 版本的 url
# from django.urls import re_path
from django.contrib import admin
from boards import views
urlpatterns = [
# Django 1.* URL匹配字符串使用正则表达式
# url('^$', views.home, name='home'),
# Django 2.* 若要使用正则匹配URL
# re_path('^$', views.home, name='home'),
path('', views.home, name='home'), # 将视图views.home,和网站根目录链接起来
path('admin/', admin.site.urls),
]
|
运行项目
1
|
$ python manage.py runserver
|
打开网站