http://download.openstreetmap.fr/extracts/asia/china/
Contents
一 安装Django
- 我是用
pip
安装的,参考菜鸟教程
安装命令:pip install https://www.djangoproject.com/download/1.11a1/tarball/
安装好之后的Django版本:>>> import django >>> django.get_version() '3.1.1'
- 本机的
pip
版本:C:\Users\mysite>pip -V pip 19.1.1 from F:\Anaconda3\lib\site-packages\pip (python 3.7)
二 搭建一个简单的django后台
步骤一:创建mysite项目和 blog应用
> django-admin startproject mysite # 创建mysite项目
> cd mysite # 切换到mysite目录
mysite> python manage.py startapp blog # 创建blog应用
项目目录结构如下:
├── blog
│ ├── __init__.py
│ ├── admin.py
│ ├── migrations
│ │ └── __init__.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
├── manage.py
└── mysite
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
文件介绍:
manage.py : Django项目里面的工具,通过它可以调用django shell和数据库等。
mysite/
| --- settings.py : 包含了项目的默认设置,包括数据库信息,调试标志以及其他一些工作的变量。
| --- urls.py : 负责把URL模式映射到应用程序。
| --- wsgi.py : 用于项目部署。
blog/
| --- admin.py : django 自带admin后台管理,将models.py中表映射到后台。【数据操作】
| --- apps.py : blog 应用的相关配置。
| --- models.py : Django 自带的ORM,用于设计数据库表。【定义对象属性和类型】
| --- tests.py : 用于编写Django单元测试。
| --- veiws.py :视图文件,用于编写功能的主要处理逻辑。【从数据库中获取数据,映射到模板中】
步骤二:打开settings.py 配置文件,添加blog应用
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog' # todo 1. 添加应用
]
步骤三:初始化后台数据库
Python 自带SQLite3数据库,Django默认使用SQLite3
数据库,如果使用其它数据库请在settings.py
文件中设置。
# todo 2.Database
# https://docs.djangoproject.com/en/3.1/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': BASE_DIR / 'db.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
步骤四:命令行生成表,创建管理账号,启动后台
Django默认帮我们做很多事情,比如User、Session 这些都需要创建表来存储数据,Django已经把这些模块帮我准备好了,我们只需要执行数据库同步,把相关表生成出来即可,在命令行输入指令:python manage.py migrate
,就可以生成相关表。
要想登录admin后台,必须要有帐号,接下来创建超级管理员帐号:python manage.py createsuperuser
。
启动django后台,python manage.py runserver
输入网址:http://127.0.0.0:8000
,管理员后台:http://127.0.0.0:8000/admin
步骤五:设计数据库表(也就是JavaEE中的PO,数据对象)【model即对象】
打开blog目录下的models.py文件,这是定义blog数据结构的地方。
from django.db import models
# Create your models here.
class BlogsPost(models.Model):
title = models.CharField(max_length = 150) # 博客标题
body = models.TextField() # 博客正文
timestamp = models.DateTimeField() # 创建时间
数据库同步
mysite> python manage.py makemigrations blog
Migrations for 'blog':
blog\migrations\0001_initial.py
- Create model BlogsPost
mysite> python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, blog, contenttypes, sessions
Running migrations:
Applying blog.0001_initial... OK
步骤六:通过admin管理blog,修改admin.py
from django.contrib import admin
from blog.models import BlogsPost
# Register your models here.
class BlogPostAdmin(admin.ModelAdmin):
"""
admin后台管理blog表数据
"""
list_display = ['title', 'body', 'timestamp']
# todo 此处的用法!admin新增一条blog数据
admin.site.register(BlogsPost, BlogPostAdmin)
有了步骤五六的操作之后,再次启动后台程序,打开管理端网页,增加了添加博文的功能。你可以点击add
添加blog。
步骤七:创建模板(就是页面,html)
在blog项目下创建templates
目录(mysite/blog/templates/),在目录下创建模板文件index.html
,内容如下:
{% for blog in blog_list %}
<h2>{{ blog.title }}</h2>
<p>{{ blog.timestamp }}</p>
<p>{{ blog.body }}</p>
{% endfor %}
这里涉及到Django模板语言,循环读取表中的数据,显示标题,创建时间和正文。
步骤八:创建视图函数(连接数据库和前端页面)
from django.shortcuts import render # 渲染
from blog.models import BlogsPost # blog模型(对象)
# Create your views here.
def blog_index(request):
"""
todo 前端的接口
:param request:获取前端的请求
:return: 对页面的渲染,把数据库中查到的所有内容返回
"""
blog_list = BlogsPost.objects.all() # 获取DB中所有BlogsPost对象数据
return render(request, 'index.html', {'blog_list': blog_list})
步骤九:创建路由
在url.py
中增加一个blog的路由,这样就可以通过网址url直接访问blog页面。
from django.contrib import admin
from django.urls import path
from blog import views # 将blog的渲染页面添加到路由管理中
urlpatterns = [
path('admin/', admin.site.urls),
path('blog/', views.blog_index), # 此处跳转的页面是view中定义的相关视图函数,每一个视图函数对应着一个template
]
再次启动服务($ python manage.py runserver),访问blog应用(http://127.0.0.1:8000/blog/)。
summary:
django集成了数据库,还有自己的后台管理界面,我需要知道django的migrate
和migragations
,还有数据类型,各种field
.
在setting.py
中完成基本的配置,然后用migrate
命令自动生成数据库,然后runserver
启动应用。
在model.py
中定义blog的字段和类型,在admin.py
中新增一条blog,完成对数据的操作。
创建模板(html网页),涉及到django的模板语言;然后在view中创建视图函数,为相关html传入数据进行渲染。
三 migrate和makemigrations
四 模板语法
五 model中的数据类型
前端选用vue
开发:demo
vue-admin-beautiful
flask:轻量级
django中的app,相当于就是不同操作目标的集合,比如用户、博客、评论
之前JavaEE的写法,一般是页面、控制、DB几个不同文件夹,所有的路由都在一个文件中
django是按照功能划分的文件夹,每一个文件夹中都包括路由urls、管理settings、视图views、模板templates、模型models
├── blog【博客】
│ ├── __init__.py
│ ├── admin.py【管理博客,增删改查】
│ ├── migrations【博客的数据库】
│ ├── models.py【博客的表定义,博客对象】
│ ├── tests.py
│ ├── urls.py
│ └── views.py【博客视图层,将后台获得的博客数据渲染到模板html页面】
├── comment【评论】
│ ├── __init__.py
│ ├── admin.py【管理评论】
│ ├── migrations
│ ├── models.py【评论的表定义】
│ ├── tests.py
│ └── views.py【平路的视图层】
├── user【用户】
│ ├── __init__.py
│ ├── admin.py【用户管理】
│ ├── migrations
│ ├── models.py
│ ├── tests.py
│ └── views.py
├── mysite【项目设置】
| ├── __init__.py
| ├── settings.py
| ├── urls.py
| └── wsgi.py
└── manage.py