美文网首页
Python Web - Django开发与项目实战

Python Web - Django开发与项目实战

作者: nimw | 来源:发表于2020-02-29 22:43 被阅读0次

    1. 入门Django框架

    1.1 介绍

    1. 内容
      环境搭建及版本选择
      URL及视图函数
      模板、ORM、表单
      后台管理、命令行工具、安全及运维

    1.2 初识Django

    Django介绍

    1. Django发展历史
      world online的三位工程师使用Python开发了Django
      Django根据比利时的爵士音乐家Django Reinhardt命名。
      2005年开源,2008年发布1.0版本。
      LTS(Long Term Support)支持。
    2. Django介绍
      开源免费的Python高级web框架,内置电池,用于快速开发可靠、安全、可扩展的web应用。
      https://docs.djangoproject.com/en/1.11/
    3. MVT模型
      模型(Model) ←→ 视图(View) ←→ 模板(Template)
    4. 网站开发流程
      (1) 选择合适的版本
      (2) 安装及配置
      (3) 生成项目结构
      (4) 内容开发
      (5) 迭代、上线、维护
    5. 版本兼容情况
    Django版本 Python版本
    1.11 2.73.43.53.63.7(added in 1.11.17)
    2.0 3.43.53.63.7
    2.12.2 3.53.63.7
    image.png
    当前选择:Django V1.11.*
    1. 环境参数
      Windows 10Xampp/Navicat for MySQLPython 3.6+Django 1.11.*Flask 1.0.*
    2. 安装Django 1.11.*
      (1) 安装
      pip3 install -i https://pypi.doubanio.com/simple django==1.11.28
      其中,-i表示指定源。
      (2) 检测版本
    ➜  ~ python3
    Python 3.7.1 (default, Nov 28 2018, 11:55:14) 
    [Clang 9.0.0 (clang-900.0.39.2)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import django
    >>> django.__version__
    '1.11.28'
    >>> quit()
    

    初始化项目

    1. 创建虚拟环境
      django1.11虚拟环境
    ➜  django mkdir django1.11 # 创建虚拟环境目录
    ➜  django cd django1.11  # 进入目录
    ➜  django1.11 pipenv --python 3.7.1 # 初始化当前虚拟环境的Python版本
    ✔ Successfully created virtual environment!
    Virtualenv location: /Users/nimengwei/Envs/django1.11-yxhb7L3z
    ➜  django1.11 pipenv shell # 激活虚拟环境
    (django1.11) ➜  django1.11 pip install django==1.11.28 # 安装django1.11.28
    Successfully installed django-1.11.28 pytz-2019.3
    (django1.11) ➜  django1.11 python3 
    >>> django.__version__
    '1.11.28'
    >>> quit() # 退出Python
    (django1.11) ➜  django1.11 exit # 退出虚拟环境
    ➜  django1.11 
    

    django3.0虚拟环境

    ➜  django mkdir django3.0 # 创建虚拟环境目录
    ➜  django cd django3.0 # 进入目录
    ➜  django3.0 pipenv --python 3.7.1 # 初始化当前虚拟环境的Python版本
    ✔ Successfully created virtual environment! 
    Virtualenv location: /Users/nimengwei/Envs/django3.0-T5e2e5tT
    ➜  django3.0 pipenv shell # 激活虚拟环境
    (django3.0) ➜  django3.0 pip install django # 安装django最新稳定版
    (django3.0) ➜  django3.0 python3
    >>> import django
    >>> django.__version__
    '3.0.4'
    >>> quit() # 退出Python
    (django3.0) ➜  django3.0 exit # 退出虚拟环境
    ➜  django3.0 
    
    1. 命令行创建django项目
      (1) 命令介绍
      生成项目模板 django-admin.py startproject 项目名称
      创建模块 python manage.py startapp 模块名
      启动服务器 python manage.py runserver
      (2) 命令行演示
    ➜  ~ cd /Users/nimengwei/Code/mycode/python/django/django1.11 # 进入虚拟环境目录
    ➜  django1.11 pipenv shell # 激活虚拟环境
    (django1.11) ➜  django1.11 cd ../../project #进入项目所在文件夹
    (django1.11) ➜  project django-admin.py startproject django_project  # 生成项目模板
    (django1.11) ➜  project cd django_project
    (django1.11) ➜  django_project python manage.py startapp accounts
    (django1.11) ➜  django_project python manage.py startapp course
    (django1.11) ➜  django_project python manage.py runserver # 启动服务器
    March 21, 2020 - 12:22:44
    Django version 1.11.28, using settings 'django_project.settings'
    Starting development server at http://127.0.0.1:8000/
    Quit the server with CONTROL-C.
    

    注意:激活虚拟环境之后,可以在任意路径创建项目。

    1. 项目模板生成的目录结构
      |--django_project 项目目录
      | |--__init__.py 包的入口文件
      | |--settings.py 项目配置文件
      | |--urls.py url访问地址配置文件
      | |--wsgi.py uwsgi配置
      |--db.sqlite3 sqlite数据库
      |--manage.py 命令管理工具
      |--accounts accounts模块
      |--course course模块
    2. Pycharm创建django项目
      (1) New Project新建项目
      新建项目
      (2) 添加Pipenv虚拟环境
      虚拟环境
      (3)运行项目
      运行项目
      (4) 修改配置
      修改配置

    URL配置及参数传递

    1. RUL协议
      http - 超文本传输协议资源
      https - 用安全套接字层传送的超文本传输协议
      ftp - 文件传输协议
      注释:http默认端口为80https 默认端口为443
    2. HTTP状态码
      2xx- 请求成功
      3xx - 重定向
      4xx - 请求错误
      5xx - 服务器错误
    3. URL的正则匹配
      (1) 参数传递
      urls.py
    url(r'^article/(?P<year>[0-9]{4})/$', views.article)
    

    views.py

    def article(request, year):
        return HttpResponse('article: ' + year)
    

    (2) URL的嵌套
    命令行创建模块

    ➜  django_ide git:(master) ✗ cd /Users/nimengwei/Code/mycode/python/django/django1.11
    ➜  django1.11 pipenv shell
    Launching subshell in virtual environment...
     . /Users/nimengwei/Envs/django1.11-yxhb7L3z/bin/activate                                                                                           
    nimengwei@nimengweideMacBook-Pro django1.11 %  . /Users/nimengwei/Envs/django1.11-yxhb7L3z/bin/activate
    (django1.11) nimengwei@nimengweideMacBook-Pro django1.11 % cd /Users/nimengwei/Code/mycode/python/Project/django_ide
    (django1.11) nimengwei@nimengweideMacBook-Pro django_ide % python manage.py startapp oauth
    (django1.11) nimengwei@nimengweideMacBook-Pro django_ide % python manage.py startapp accounts
    (django1.11) nimengwei@nimengweideMacBook-Pro django_ide % python manage.py startapp pay     
    (django1.11) nimengwei@nimengweideMacBook-Pro django_ide % 
    

    URL嵌套

    1. 设计优雅的URL
      (1) 更简洁的URL
      优化前:http://example.com/article/?year=2018&month=12&day=21
      优化后:http://example.com/article/2018/12/21
      (2) 使用命名空间
      两种不同的角色,访问不同的URL,但是结果相同。
      使用namespace指定命名空间。
    urlpatterns = [
        url(r'^author-polls/', include('polls.urls', namespace='author-polls')),
        url(r'^publisher-polls/', include('polls.urls', namespace='publisher-polls')),
    ]
    

    (3) 使用nameURL指定名称

     url(r'^article/2018/$', views.article, name='article_detail')
    

    给URL指定名称并逆向解析

    1.3 视图

    1.4 模板语法

    2. 实战:Django对象关系映射(ORM)

    3. 表单介绍与使用

    4. Web项目实战-后台管理系统

    5. Django命令工具与中间件

    6. Django的安全及维护

    相关文章

      网友评论

          本文标题:Python Web - Django开发与项目实战

          本文链接:https://www.haomeiwen.com/subject/chomhhtx.html