• 01-开始使用django(全、简)


    编辑

    目录
    (一)创建项目
    1、生成django默认目录
    2、创建应用目录
    3、安装应用
    4、配置使用mysql数据库
    5、运行轻量级web服务器,预览
    (二)设计模型
    1.在models.py中定义模型类
    2.迁移
    3.通过类和对象完成数据crud
    (三)后台管理(管理站点,编辑)
    1.管理界面本地化
    2.创建管理员
    3.注册模型类
    4.自定义管理页面
    (四)视图和URL(控制器和调用方法)
    1.定义视图
    2.配置URLconf
    (五)模板
    1.定义模板
    2.视图调用模板(简写)
     
     

    可选项:创建虚拟环境

    mkvirtualenv -p python3 bj11_py3
    使用虚拟环境
    workon bj11_py3
    安装第三方包
    pip install django==1.8.2

    (一)创建项目
    1、生成django默认目录
    打开pycharm,点击File->New Project菜单,创建django目录结构
    或者
    python3  XXX/scripts/django-admin.exe  startproject  test1
     
    2、创建应用目录
    在pycharm的terminal终端
    python manage.py startapp booktest
     
    3、安装应用(注册应用)
    在test1/settings.py中INSTALLED_APPS下添加应用的名称就可以完成安装,在元组中添加一个新的项,当前示例为booktest
    INSTALLED_APPS = (
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'booktest',
    )
     
    4、配置使用mysql数据库
    django默认的数据库是slqite,需要修改为mysql数据库。
    settings.py中修改配置为:
    DATABASES = {
        'default': {
            # 'ENGINE': 'django.db.backends.sqlite3',
            # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
            'ENGINE': 'django.db.backends.mysql',
            'NAME': "mydjangodb",
            'HOST': 'localhost',
            'PORT': 3306,
            'USER': 'root',
            'PASSWORD': 'root',
        }
    }
     
    为django的MySQLdb()方法,修改pymysql的数据操作方法起一个MySQLdb()别名
    项目名称的主包下,__init__.py添加为
    import pymysql
    pymysql.install_as_MySQLdb()
    如果之前有数据库,就把数据库模型考过来(放到models.py)。无需迁移操作。
     
    5、运行轻量级web服务器,预览
    python manage.py runserver 8000
    或者
    python manage.py runserver 127.0.0.1:8000
    python manage.py runserver 0.0.0.0:8000  --insecure
    --insecure 参数用于解决关闭调试模式时,无法加载js、css的问题参考
     
    然后在浏览器中输入网址“127.0.0.1:8000”
    或者直接点击pycharm右上角的运行按钮
     
    (二)设计模型
    1.在models.py中定义模型类
    from django.db import models
    class BookInfo(models.Model):
        btitle = models.CharField(max_length=20)
        bpub_date = models.DateField()
        def __str__(self):
            return "%d" % self.pk
    class HeroInfo(models.Model):
        hname = models.CharField(max_length=20)
        hgender = models.BooleanField()
        hcontent = models.CharField(max_length=100)
        hBook = models.ForeignKey('BookInfo')
        def __str__(self):
            return "%d" % self.pk
     
    延伸:
    (1)模型类-》数据库
     
    (2)数据库-》模型类
    数据库反向建立模型类:https://www.cnblogs.com/andy9468/p/8810071.html
     
    (3)修改表名、修改字段名、打印显示名称
     
    (4)为模型类添加方法(推荐到模型类的管理器中直接添加方法)
     
    2.迁移
    迁移前,要手动创建数据库。
    迁移由两步完成
    (1)生成迁移文件:根据模型类生成创建表的sql语句
    python manage.py makemigrations
     
    (2)执行迁移:根据第一步生成的sql语句在数据库中创建表
    python manage.py migrate
    如果有警告,可以关闭:https://www.cnblogs.com/xb88/p/8057987.html 
     
    3.通过类和对象完成数据crud
     
     
     
    (三)后台管理(管理站点,编辑)
    1.管理界面本地化
    打开test1/settings.py文件,找到语言编码、时区的设置项,将内容改为如下
    LANGUAGE_CODE = 'zh-Hans' # 设置汉语显示
    TIME_ZONE = 'Asia/Shanghai' # 设置具体时区,配合USE_TZ使用
    USE_I18N = True
    USE_L10N = True
    USE_TZ = False  # 使用非美国时区
    
     
    2.创建管理员
    在Terminal中执行如下命令,用于创建管理员
    python manage.py createsuperuser
     
    根据提示创建超级用户python
    打开浏览器,在地址栏中输入如下地址后回车
    输入前面创建的用户名、密码完成登录
     
    3.注册模型类
    登录后台管理后,默认没有我们创建的应用中定义的模型类,需要在自己应用中的admin.py文件中注册,才可以在后台管理中看到,并进行crud操作
    打开booktest/admin.py文件,编写如下代码
    from django.contrib import admin
    from .models import BookInfo,HeroInfo
    admin.site.register(BookInfo)
    admin.site.register(HeroInfo)
     
    到浏览器中刷新页面,可以看到模型类BookInfo和HeroInfo的管理了
     
    说明:
    点引用方案:   from .models import BookInfo,HeroInfo 中 .models的含意:同级目录用点.
    项目等效方案:from  booktest.models  import BookInfo,HeroInfo  中 booktest.models的含义是:从项目的入口文件(manage.py)所在目录开始找。
     
    4.自定义管理页面
    打开booktest/admin.py文件,自定义类,继承自admin.ModelAdmin类
    属性list_display表示要显示哪些属性
    class BookInfoAdmin(admin.ModelAdmin):
        list_display = ['pk', 'btitle', 'bpub_date']
    修改模型类BookInfo的注册代码如下
    admin.site.register(BookInfo, BookInfoAdmin)
    最终booktest/admin.py文件代码如下
    from django.contrib import admin
    from .models import BookInfo, HeroInfo
    
    
    class BookInfoAdmin(admin.ModelAdmin):
        list_display = ['pk', 'btitle', 'bpub_date']
    
    
    class HeroInfoAdmin(admin.ModelAdmin):
        list_display = ['pk', 'hname', 'hgender', 'hcontent']
    
    
    admin.site.register(BookInfo, BookInfoAdmin)
    admin.site.register(HeroInfo, HeroInfoAdmin)
    

      

    说明:数据修改功能为,进入admin管理页面,打开表格,点击每一行中有超链接的字段数据,就可修改。一般该字段为id字段。

     
    (四)视图和URL(控制器和调用方法)
    1.定义视图views.py
    打开booktest/views.py文件,定义视图index如下
    #coding:utf-8
    from django.http import HttpResponse
    def index(request):
        return HttpResponse("index")
    

      

     
    2.配置URLconf
     
    (1)在test1/urls.py文件,为urlpatterns列表增加项如下
    url(r'^', include('booktest.urls')),
     
     
    (2)在booktest/应用下创建urls.py文件,定义代码如下
    from django.conf.urls import url
    from . import views
    urlpatterns = [
        url(r'^$', views.index),
    ]
    

      

    拓展:r的作用
    url(r'^detaild$', views.index)
    或者
    url('^detail\d$', views.index)
    原因是
    python将视为转义
    正则也将视为转义
     
    视图和URLconf都定义好了,接下来在浏览器地址栏中输入网址
    http://127.0.0.1:8000/
     
    (五)模板
    1.定义模板
    打开test1/templates/booktest/index.html文件,定义代码如下
    (1)模板变量:在模板中输出变量语法如下,变量可能是从视图中传递过来的,也可能是在模板中定义的
    {{变量名}}
     
    (2)模板标签:在模板中编写代码段语法如下
    {%代码段%}
     
    1)例一:循环
    <ul>
        {% for i in list %}
            <li>{{ i }}</li>
        {% endfor %}
    </ul>
    
    (3)模板中注释
    ①单行注释
    {# 注释内容 #}
     
    ②多行注释:
    {%  comment  %}
    注释内容1
    注释内容2
    {%  endcomment  %}
     
    定义模板内容如下
    <html>
    <head>
        <title>图书列表</title>
    </head>
    <body>
    <h1>{{title}}</h1>
     {%for i in list%}
        {{i}}
     {%endfor%}
    </body>
    </html>
     
    设置查找模板的路径:打开test1/settings.py文件,设置TEMPLATES的DIRS值
    'DIRS': [os.path.join(BASE_DIR, 'templates')],
     
    2.视图向模板传送数据
    打开booktest/views.py文件,调用render的代码如下
    #coding:utf-8
    from django.shortcuts import render
    def index(request):
        context={'title':'图书列表','list':range(10)}
        return render(request,'booktest/index.html',context)   # 渲染到模板
     
    小结:HttpResponse和render
    HttpResponse覆盖原有页面,输出内容,如:
    return HttpResponse("show1 i am %s" % id)
     
    render将数据从视图传送到模板页面,如:
    context={'title':'图书列表','list':range(10)}
    return render(request,'booktest/index.html',context)
  • 相关阅读:
    14.3 Go iris
    14.2 Go性能优化
    14.1 Go数据结构
    13.3 Go章节练习题
    13.2 Go练习题答案
    13.1 Go练习题
    12.1 Go nsq
    11.3 Go 开发博客
    11.2Go gin
    11.1 Go Http
  • 原文地址:https://www.cnblogs.com/andy9468/p/8784095.html
Copyright © 2020-2023  润新知