小酌Django1——Django基础

小酌Django1——Django基础

Python可以做:数据统计、爬虫、机器学习、人工智能… 还有Web开发;本文主要内容即以Python为基础进行简单Web应用开发;

目标:

  • 学习Django;
  • 完成项目,同时学习相关知识(边学边用,活学活用);

Django基础

  • Web开发中应用的开发框架,用于快速构建一个网站;实践中多多参考文档(或2.0版本的中文文档);Web开发 需要前端技术的支持;
  • 易学、开发快、插件多(如用户管理、内容管理、网站地图、RSS等常用插件)、安全(默认解决了SQL注入、跨站攻击等问题)、应用广泛(各类在线服务网站、管理系统、社交网站、计算平台);
  • Python相关的开发网站框架除了Django,还有Tornado、Flask等;

Django安装

  • 直接基于Python 3开发和学习Django即可;
  • 使用命令: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开发中的最新版本;

创建项目

  • 项目(project):可以理解为一个网站
  • 应用(application):网站中某个或几个功能的集合称为一个“应用”,网站往往由多个“应用”组成;

切换到项目文件夹下,执行命令:

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

创建项目时用到的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 <subcommand>' 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中新建的一个应用:

  • 新建应用后,Django会自动在这个应用中添加一些文件;
  • 使用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

  • 创建后自动生成该文件,它是对django-admin.py的简单封装,同样能够实现命令行操作;
  • 与django-admin对比,会发现有一部分代码相同,同时manage.py还有自己特有的命令;
  • 该文件不要修改也不要删除,后续会经常使用;
$ python manage.py

Type 'manage.py help <subcommand>' 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映射到应用程序上;
    • 当请求某个URL时,Django项目会根据文件中映射关系指向某个目标对象,该对象可以是某个应用中的urls.py文件,也可以是某个具体的视图函数;
    • 在Django中,这个文件也被称为URLconf,这是Django非常强大的特性之一;
  • 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:重要文件,用于保存响应各种请求的函数或类;
    • 如果编写的是函数,则称为基于函数的视图;
    • 如果编写的是类,则称之为基于类的视图;
    • views.py就是保存函数或者类的视图文件;(文件名称可变,views是惯用名)

根目录:db.sqlite3

  • 默认数据库文件;SQLite是Python默认安装的数据库,在Django中默认使用;
  • 该文件在./mysite/settings.py中配置生成;

项目信息配置说明

目前只创建了应用,还未将应用注册到项目中,暂时也无法访问;

./mysite/settings.py是主管信息注册(各类信息声明)的文件,其中主要内容说明如下:

  • DEBUG:
    • 值:True或False,开发中需要设置为True,表示处于开发模式,这样在测试时会显示详细的错误信息;
    • 项目部署生产时,必须修改为False,避免暴露项目内部信息;
  • ALLOWED_HOSTS:
    • DEBUG=True时,该值可为空;
    • 部署生产时,要把主域名填写到这里,才能通过域名访问本网站;
  • INSTALLED_APPS:
    • 重要配置项,所有应用需要写到这里才能生效;
    • 默认已经有了一些配置;如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应用
]
  • DATABASES:
    • 数据库配置;Django支持多种数据库,如MySQL、PostgreSQL、Oracle等,默认配置的是SQLite,这也是Python标准库所支持的;相关数据库配置方式可参考官网文档;
  • LANGUAGE_CODE:
    • 项目语言配置,一般不用修改;示例设置为汉语LANGUAGE_CODE='zh-hans';
  • TIME_ZONE:
    • 设置时区,通常设置为东八区,设置为Asia/Shanghai

Django的开发模式和生产模式

开发模式下:

  • Django提供了简单的Web服务器功能,无需配置Apache或者Nginx等服务器,也可运行网站;
  • Django会自动检测到修改的代码并重新加载,无需每次修改代码后都重启Web服务器;(增加文件需要重启)
  • 运行服务的指令:python manage.py runserver

生产模式:

  • 正式部署时,需要对部分配置进行修改;

小结

  • Django安装好之后,就有了djangoadmin这个默认命令,可以用diango-admin startproject projectname命令创建一个Django项目;
  • 项目是由若干个“应用”(app)组成的,实现具体功能。创建应用可以使用python manage.py startapp appname命令,也可以使用django-amdin startapp appname命令;
  • 创建了项目和应用之后,会生成一些默认的文件,它们要么是一些默认的配置,如settings.py,要么是空文件,仅仅是为了占据一个位置而已,如应用里面的views.pymodels.py等;
  • 每个应用都要在项目的settings.py文件的INSTALLED_APPS中进行声明,告诉Django这个应用是本项目的一部分。

Django将很多默认的功能(比如用户管理功能)视为一个应用;此外,Django是一个开放的系统,任何人都可以开发第三方应用,这些第三方应用通常用于解决某个常见的问题,开发者在项目中使用第三方应用的主要目的就是节省时间、快速开发;这些第三方应用如果要在项目中使用,也要在settings.pyINSTALLED_APPS中注册后才能生效。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值