zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    【Leetcode】【Easy】Remove Duplicates from Sorted List
    【Leetcode】【Easy】Pascal's Triangle II
    【Leetcode】【Easy】Pascal's Triangle
    【Leetcode】【Easy】Binary Tree Level Order Traversal II
    【Leetcode】【Easy】Binary Tree Level Order Traversal
    【Leetcode】【Easy】Maximum Depth of Binary Tree
    【Leetcode】【Easy】Minimum Depth of Binary Tree
    【Leetcode】【Easy】Balanced Binary Tree
    【Leetcode】【Easy】Symmetric Tree
    如何使用Action.Invoke()触发一个Storyboard
  • 原文地址:https://www.cnblogs.com/andy9468/p/8784095.html
Copyright © 2011-2022 走看看