lynda.com教程之Learning Python and Django_手把手零基础搭建Django项目

www.lynda.com作为全球一流的在线培训网站,一直以高质量的视频课程著称。其课程内容也是紧跟行业潮流,本人最近学了里面的一门课程Learning Python and Django, 分享一下。

课程链接:https://www.lynda.com/Django-tutorials/Up-Running-Python-Django/386287-2.html
获取lynda.com永久会员的链接:https://item.taobao.com/item.htm?id=557746408785

前言:
什么是Django?
Django是一个开放源代码的Web应用框架,由Python写成。web框架是一系列的用于开发网页或网页应用的工具集合。Django里面的工具包括:
1. 对象关系映射 Object-relational mapping
2. url路由 url rooting
3. html模板 html templating
4. 表单处理 form handling
5. 测试 testing

  1. 建立一个Django项目
    1.1 安装python
    可以前往www.python.org, 建议安装python 3.6 最新版,python2.7很快就会淘汰.

    1.2 安装pip
    下载get-pip.py地址:https://bootstrap.pypa.io/get-pip.py
    打开终端, 输入:python get-pip.py 或者 sudo python get-pip.py
    安装完成后输入: pip –version 查看验证

    1.3 安装Django
    终端输入:pip install django 或者sudo pip install django
    检查安装版本: django-admin –verison

    1.4 创建一个Django项目
    创建Django命令: django-admin startproject firstdjango
    此命令会创建一个以firstdjango为名字的文件夹,里面包含manage.py 和firstdjango文件夹;
    @1 manage.py: 主要负责运行跟项目相关的命令
    获取manage.py命令列表:python manage.py
    启动server: python manage.py runserver
    前往浏览器,输入地址:localhost:8000 能看到消息说明创建成功
    @2 firstdjango文件夹:
    init.py :主要用于告诉Django项目文件的位置
    settings.py :主要用于配置Django
    manage.py : 主要负责运行跟项目相关的命令
    urls.py : 根据http请求,并查找分配路径
    wsgi.py :被服务器调用,用以运行Django项目

    1.5 创建一个Django应用程序
    应用程序是一系列的python文件集合,应用程序作为Django的一个组件。一个Django程序可能包含多个不同角色的app程序
    一个应用程序通常包含以下以及文件或者文件夹:

    1. models.py 数据层 数据结构和如何查询数据
    2. admin.py 接口管理 查看和更新数据
    3. views.py 控制层 –> http request –>> http response
    4. tests.py app测试
    5. migrations/ 保存迁移文件 数据库随时间如何创建和更改

      创建app命令:python manage.py startapp firstapp
      当添加一个app到django项目中时,需要编辑settings.py; 在INSTALLED_APPS后面添加”firstapp”;
      这样就算创建了一个Django项目了。

      1.6 设置django setting

      Django Setting–python module variables
      setting reference
      1.INSTALLED_APPS 当添加一个app的时候需要设置
      2.TEMPLATES 当第一次添加模板的时候需要设置

      1. STATICFILES_DIRS 第一次添加静态资源的时候
        其他设置:
      2. DEBUG 默认是True, 设置为false
      3. DATABASES 默认SQLite, 需要使用MYSQL的时候,需要设置账号参数等
      4. 其他小的设置 参照文档
  2. Django Models和admin
    2.1 定义Django模型
    1. model定义数据结构,以及在数据库如何存储,并通过ORM查询数据库
    2. 一个Django App包含一个models.py文件,一个models.py多个model模型
    3. model是继承了dhango.db.models的一个类
    4. 每个model就是一张表,field相当于每张表里面的列,record相当于表里面的行row
    2.2 定义数据表的列field
    1. CharField(length=100) 包含最多100个字符的字符集合
    2. TextField() 长度无限制的字符集
    3. EmailField() 储存email
    4. UrlField() 储存Url
    5. FileField() 存储文件
    6. ImageField() 存储图片,本质上也是一个FileField,但是验证是否为图片
    7. BooleanFeild 布尔数据
    8. DateTimeField 存储日期
    Field可以有不同的属性,比如:
    model.CharField(max_length=10, null=True, blank=True)
    –max_length: 最大长度
    –null: True 没有数据
    –blank:True 表示允许该字符为空
    –default: 设置默认值
    –choices: 设置选项,只能从选项中选取
    更多关于Field的文档链接: https://docs.djangoproject.com/en/1.11/ref/models/fields/

    2.3 创建和运行migrations:
    Models:定义数据表结构
    migrations: 通过代码更改操作数据结构
    1. 初始化migrations:
    更改数据库,包括添加model数据表,添加列Field, 删除列,更改列,都需要通过migrations实现
    操作命令:
    python manage.py makemigrations
    python manage.py migrate –list
    python manage.py migrate
    然后可以用sqlitebrowser,打开db.sqlite3,查看创建的数据库

    2.4 Django Admin管理员登录
    Django Admin实现登录,然后可以对数据表进行增删改查;
    1. admin.py 里面添加代码:
    from .models import item
    admin.site.register(Item)
    2. 终端添加超级管理员权限
    python manage.py createsuperuser
    输入系统密码:
    输入邮箱:
    输入密码:
    创建成功
    3. 运行服务器
    python manage.py runserver

    4. 更改显示的内容 
        因为默认显示"item object", 可以前往admin更改显示的内容,代码如下:
        from django.contrib import admin
        from .models import Item
        class ItemAdmin(admin.ModelAdmin):
            list_display = ['title', 'amount', 'description']
        admin.site.register(Item, ItemAdmin)
    

    2.5 使用对象映射模型(ORM)操作数据表
    命令:python manage.py shell 进入启动了Django的交互界面
    1. 查询所有对象
    In [1]: from inventory.models import Item

      In [2]: Item.objects.all()  # 显示所有的item对象
      Out[2]: <QuerySet [<Item: Item object>, <Item: Item object>, <Item: Item object>]>
    
      In [3]: items = Item.objects.all() #获取所有的Item对象列表 
    
      In [4]: item_1 = items[0]  # 查看item  1 
    
      In [5]: item_1.title  # 查看item_1 的列值  title
      Out[5]: 'Tao Jian'
    
      In [7]: item_1.description  # 查看item_1 的列值  description
      Out[7]: 'this is a person named "taojian"'
    
      In [8]: item_1.amount
      Out[8]: 1
    2. 查询单个对象 
      In [10]: Item.objects.get(id=1)
      Out[10]: <Item: Item object>
    
      In [11]: Item.objects.get(id=1).title
      Out[11]: 'Tao Jian'
    
      In [15]: Item.objects.exclude(amount=0)
      Out[15]: <QuerySet [<Item: Item object>, <Item: Item object>, <Item: Item object>]>
    
      In [16]: Item.objects.exclude(amount=0)[0]
      Out[16]: <Item: Item object>
    
      In [17]: Item.objects.exclude(amount=0)[0].title
      Out[17]: 'Tao Jian'
    
  3. 创建视图和模板(views-templates)
    3.1 理解urls,视图和模板
    大体上,Django使用MVC矿建,models=数据模型,views=视图,controller=控制器,理解Django需要理解四个部分:URL模式,视图,模型和模板(url patterns, views, models ,templates)
    URL Patterns –>> views(query date from models) –> templates

    根据请求的路径,决定使用哪些视图来处理请求,url将控制权交给视图,
    视图是程序的逻辑层,接受http请求并返回http响应的python函数。视图在inventory/views.py中定义。每个视图都可以使用我们在inventory/models.py中定义的模型来查询需要的数据表。每个视图都依赖于对应的模板来显示对应的html内容。每个模板都是一个单独的函数,有html和一些额外的模板语法来组成。
    
    
    如果请求的路径只是一个斜杠'/',那么请求将会被传递到inventory/views.py文件中的索引函数处理。该视图将使用firstdjango/templates/inventory/index.html中的模板文件生成访问该站点的页面,
    
    request : "/" ---->> Views(query date from models) ---->> templates(put data into html templates ) --->> return html with date --> user
    如果请求的是"/item/1", 视图将使用该数字1来查询对应的数据,将数据塞入模板文件html中,然后发送给用户。 
    
    request:"/item/1" ---> views(query data with id "1" )--> templates(put data into html)-->return html-->user 
    

    3.2 了解网址格式

    1. 正则表达式
        使用正则表达式解析http请求。以下是常见的正则表达式:
        \d -- 数字字符
        \d+ -- 至少一个数字字符
        ^admin/ 以admin/开头的字符串
        html$   以html结尾的字符串
        ^$      "" \S    
        正则表达式在线检查网站: pythex.org
        url.py会定义个叫做urlpatterns的列表变量,用来存储对url函数的调用列表。
        url函数(正则表达式,要调用的视图, 模板名称)
        正则表达式:用于匹配http请求 
        要调用的视图:如果匹配成功后,需要调用的视图
        模板名称:templates 
    
        代码如下:
        from django.conf.urls import url
        from django.contrib import admin
    
        urlpatterns = [
            url(r'^admin/', admin.site.urls),
            url(r'^$', views.index, name="index")
            ]
        程序会遍历urlpatterns中的url,依次匹配,如果全部都不匹配成功,返回404错误
    

    3.3 配置URL模式

    url.py 代码:
    from django.conf.urls import url
    from django.contrib import admin
    from inventory import views
    # 导入view模块
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^$', views.index, name="index"),
        url(r'^item/(?P<id>\d+)/', views.item_detail, name="item_detail"),
    ]
    
    views.py代码:
    
    from django.shortcuts import render
    from django.http import HttpResponse
    # Create your views here.
    def index(request):
        return HttpResponse("<p> Reponse: index view </p>")
    def item_detail(request, id):
        return HttpResponse('<p> Response: item_details view with item id {0}'.format(id))
    
    当输入localhost:8000时,将显示Reponse: index view
    当输入localhost:8000/item/123时候,将显示:response: item_details view with item id 1
    

    3.4 实现视图(views)
    视图实现了项目的控制层逻辑。 视图通过模型查询数据库,使用模板生成HTML.

猜你喜欢

转载自blog.csdn.net/birdflyinhigh/article/details/78603921
今日推荐