Django初步探索

http://download.openstreetmap.fr/extracts/asia/china/

一 安装Django

  1. 我是用pip安装的,参考菜鸟教程
    安装命令:pip install https://www.djangoproject.com/download/1.11a1/tarball/
    安装好之后的Django版本:
    >>> import django
    >>> django.get_version()
    '3.1.1'
    
  2. 本机的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的migratemigragations,还有数据类型,各种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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值