美文网首页
Django 入门

Django 入门

作者: edwin1993 | 来源:发表于2019-03-13 15:17 被阅读0次
    • Django 2.x
    • Python 3.x

    Django是基于python的高级web框架,高度集成,可以高效快速开发。

    1 目录结构说明

    通过 pip 安装 django,随后通过指令创建一个myblog项目:

    django-admin startproject myblog
    

    项目结构如下:

    manage.py

    manage.py是与项目进行交互的命令行工具集的入口。
    通过python manage.py 可以查看子命令:

    通过runserver [port]启动项目:

    wsgi.py

    WSGI(python web server gateway interface)
    python服务器网关接口,python应用和web服务器之间的接口

    urls.py

    URL配置文件
    所有URL都需要进行配置

    setting.py

    项目的总配置文件,数据库、web应用、服务器时间等

    上图中的ALLOWED_HOSTS 为允许的访问源

    APPS中为可执行的应用,后续自己创建的应用也需要添加其中才能识别。

    TEMPLATES就是模板的配置文件

    数据库配置,其它数据库的添加需要进入网址进行查看与编配。

    init.py

    python的模块声明文件,有了它整个文件夹就可以作为一个模块进行引用。

    2 创建项目

    进入manage.py的同级目录,输入startapp blog
    blog为应用名

    在配置文件中添加一下

    应用的目录结构:

    migrations

    数据迁移模块,内容自动生成。

    admin.py

    应用的后台管理系统。

    apps.py

    应用的配置文件

    models.py

    数据表的模块文件,用于支持ORM框架
    类似于MVC中的Model

    tests.py

    自动化测试模块,需要编写测试脚本。

    views.py

    执行响应的代码所在模块,
    主要的代码编辑区。

    在views中添加相关的响应:

    from django.shortcuts import render
    from django.http import HttpResponse
    
    def index(request):
        return HttpResponse("hello world")
    

    然后在urls中进行相关的配置:

    from django.contrib import admin
    from django.urls import path
    //import进新建应用:
    import blog.views as blogView
    
    urlpatterns = [
        path('admin/', admin.site.urls),
    //以新建应用为主题,创建path
        path('blog/', blogView.index),
    ]
    

    验证url的配置情况:

    小结:
    • 编辑blog.views:
      每个响应对应一个函数,函数必须返回一个响应。
      每个函数必须存在一个参数,约定为request。
      一个响应函数对应一个url

    • 编辑urls.py
      每个url都需要在文件中编写
      url函数放在urlpatterns列表中
      url函数三个参数:URL,对应方法,名称


    补充另外一种配置url的方法。
    首先在项目根目录下的urls中添加include模块并修改urlpatterns

    from django.contrib import admin
    from django.urls import path
    
    from django.urls import include
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('blog/', include('blog.urls')),
    ]
    

    然后在对应的app下新建urls,并添加内容:

    from django.urls import path
    from . import views
    
    urlpatterns = [
        path('blog/', views.index),
    ]
    

    新的url将由两者拼接而成:

    3 Templates

    Templates就是HTML文件,使用了Django模板语言,可以使用第三方模板如Jinja2

    当使用其它第三方模板的时候,修改setting中的templates:

    编写页面过程:

    在之前创建的app目录下创建templates目录,并在目录中新建html文件:

    然后在view.py中返回一个render()

    from django.shortcuts import render
    from django.http import HttpResponse
    
    def index(request):
        return render(request,'index.html')
    

    render()一般包含三个参数,第一个为request,第二个为html页面,第三个为返回的数据。
    render()支持的数据类型为字典,在html文件中直接使用{{参数名}}来使用传递的数值

    from django.shortcuts import render
    from django.http import HttpResponse
    
    def index(request):
        return render(request,'index.html',{'hello':'hello info'})
    
    <h1>{{ hello }}</h1>
    

    常见问题:

    Django查找Template时,按照installed_apps中的添加顺序产找templates,不同app中templates目录下的同名html文件会冲突。

    解决方案:在app的Templates目录下创建以app名称为名的目录,将html文件放入,同时修改views中的路径。

    4 Models

    通常,一个model对应数据库中的一张数据表。
    Django中的Models以类的形式表现,包含一些基本字段和数据的行为。

    也被称为ORM(Object Relation Mapping),对象关系映射,实现了对象和数据库之间的映射,隐藏了数据访问的细节。

    • 编写Model:

    在应用根目录下创建一个models.py文件,并引入models模块。

    创建类,集成models.Model类,该类即使一张数据表。
    在类中创建字段。

    from django.db import models
    
    
    class Article(models.Model):
        title = models.CharField(max_length=32,default="title")
        content = models.TextField(null=True)
    
    • 生成数据表:
      命令行进入manage.py同级目录,执行:
    python manage.py makemigrations [app name]
    python manage.py migrate
    //如果无参数,则默认所有目录下的app都进行该操作。
    

    如上图所示,未指定APP时,会对所有app都进行操作,包括其自带的app

    在app目录下的migrations里可以看到生成的initial文件:

    查看sql语句:

    python manage.py sqlmigrate blog 0001
    

    未进行额外配置的情况下,默认使用sqlite3数据库,在项目根目录下的db.sqlite3。
    在该数据库中创建相关数据:

    • 在页面中显示:

    在views.py 中:

    from blog.models import Article
    
    def index(request):
        article = Article.objects.get(pk=1)
        return render(request,'blog\index.html',{'article':article})
    

    在html文件中:

    <body> 
    <h1>{{ article.title }}</h1>
    <h1>{{ article.content }}</h1>
    </body>
    

    5 Admin

    Django自带的后台数据管理系统,可以让被授权的用户在Admin中进行数据库管理。

    • 配置Admin

    创建用户:

    python manage.py createsuperuser
    

    依次输入用户名、邮箱、密码


    访问/admin进入后台页面。

    通过修改settings中的 LANGUAGE_CODE = 'zh_Hans'来使用中文界面。

    • 配置应用
      在应用下的admin.py中引入自身的models模块。

    例如,编辑admin.py

    // 2.x  似乎可以直接from models import  在3.x中需要使用 . 来表达当前目录下。
    from .models import Article
    
    admin.site.register(Article)
    

    进入对应app后可以修改内容

    • 修改数据的默认显示名称

    默认为object
    可以在对应的类下(此处为Article)添加:
    __str__(self) #3.x
    __unicode__(self) #2.x

        def __str__(self):
            return self.title
    
    

    相关文章

      网友评论

          本文标题:Django 入门

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