s14_01_django基础 admin

Django基础


- Web框架

    - Web框架本质、自定义Web框架
        https://www.cnblogs.com/wupeiqi/articles/5237672.html    
        
    - MVC和MTV
        MVC
            Model    View        Controller
            数据库   模板文件    业务处理
        MTV
            Model    Template    View
            数据库   模板文件    业务处理
                    
- 基本配置

    # 安装:pip3 install django

    # 创建Django工程
        django-admin startproject 【工程名称】
        
        mysite
            - mysite        # 对整个程序进行配置
                - init
                - settings  # 配置文件
                - url       # URL对应关系
                - wsgi      # 遵循WSIG规范,上线后:uwsgi + nginx
            - manage.py     # 管理Django程序:
                                - python manage.py
                                - python manage.py startapp xx
                                - python manage.py makemigrations
                                - python manage.py migrate
            - app01
                - views.py
                - admin.py
                - models.py # 创建数据库表
                
    # 运行Django功能
    python manage.py runserver 127.0.0.1:8001

    # 创建app
    cd mysite
    python manage.py startapp cmdb
    python manage.py startapp openstack
    python manage.py startapp xxoo....
    
        # app:
            migrations     数据修改表结构
            __init__.py       python2必须文件,python3不需要
            admin          Django为我们提供的后台管理
            apps           配置当前app
            models         ORM,写指定的类,通过命令可以创建数据库结构
            tests          单元测试
            views          业务代码
        
    # 其他常用命令:

      python manage.py runserver 0.0.0.0
      python manage.py startapp appname
      python manage.py syncdb
      python manage.py makemigrations
      python manage.py migrate

      python manage.py createsuperuser
    
    # 配置模板的路径
        TEMPLATES = [
                {
                    'BACKEND': 'django.template.backends.django.DjangoTemplates',
                    'DIRS': [os.path.join(BASE_DIR, 'templates')],
                    'APP_DIRS': True,
                    'OPTIONS': {
                        'context_processors': [
                            'django.template.context_processors.debug',
                            'django.template.context_processors.request',
                            'django.contrib.auth.context_processors.auth',
                            'django.contrib.messages.context_processors.messages',
                        ],
                    },
                },
            ]
    # 配置静态目录
        static
    
        STATICFILES_DIRS = (
            os.path.join(BASE_DIR, 'static'),
        )
        
        <link rel="stylesheet" href="/static/commons.css" />
    
    # 数据库
    
        DATABASES = {
            'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME':'dbname',
            'USER': 'root',
            'PASSWORD': 'xxx',
            'HOST': '',
            'PORT': '',
            }
        }    
        
        # Django连接MySQL时使用MySQLdb模块,而python3中无此模块,所以需要使用pymysql来代替
        # 如下设置放置的与project同名的配置的 __init__.py文件中
        
        import pymysql
        pymysql.install_as_MySQLdb()
        
        # 使用model.py时配置 project.settings.py
        INSTALLED_APPS
            app01,
         
    # 注释csrf(暂时注释)
    # Django请求生命周期
    
    
            
- admin    
    
    # django amdin是django提供的一个后台管理页面,提供完善的html和css,
    # 在通过Model创建完数据库表之后,就可以对数据进行增删改查,
    # 使用django admin 则需要以下步骤:

    - 创建后台管理员
    - 配置url
    - 注册和配置django admin后台管理页面

    1、创建后台管理员
        
        python manage.py createsuperuser

    2、配置后台管理url

        url(r'^admin/', include(admin.site.urls))

    3、注册和配置django admin 后台管理页面

        a、在admin中执行如下配置
            
            from django.contrib import admin
              
            from app01 import  models
              
            admin.site.register(models.UserType)
            admin.site.register(models.UserInfo)
            admin.site.register(models.UserGroup)
            admin.site.register(models.Asset)
            
        b、设置数据表名称
            
            class UserType(models.Model):
                name = models.CharField(max_length=50)
              
                class Meta:
                    verbose_name = '用户类型'
                    verbose_name_plural = '用户类型'

        c、打开表之后,设定默认显示,需要在model中作如下配置
    
            class UserType(models.Model):
                name = models.CharField(max_length=50)
              
                def __unicode__(self):
                    return self.name
    
            from django.contrib import admin
              
            from app01 import  models
              
            class UserInfoAdmin(admin.ModelAdmin):
                list_display = ('username', 'password', 'email')
              
              
            admin.site.register(models.UserType)
            admin.site.register(models.UserInfo,UserInfoAdmin)
            admin.site.register(models.UserGroup)
            admin.site.register(models.Asset)

        d、为数据表添加搜索功能
        
            from django.contrib import admin
              
            from app01 import  models
              
            class UserInfoAdmin(admin.ModelAdmin):
                list_display = ('username', 'password', 'email')
                search_fields = ('username', 'email')
              
            admin.site.register(models.UserType)
            admin.site.register(models.UserInfo,UserInfoAdmin)
            admin.site.register(models.UserGroup)
            admin.site.register(models.Asset)

        e、添加快速过滤
            from django.contrib import admin
              
            from app01 import  models
              
            class UserInfoAdmin(admin.ModelAdmin):
                list_display = ('username', 'password', 'email')
                search_fields = ('username', 'email')
                list_filter = ('username', 'email')
                  
              
              
            admin.site.register(models.UserType)
            admin.site.register(models.UserInfo,UserInfoAdmin)
            admin.site.register(models.UserGroup)
            admin.site.register(models.Asset)

        更多:http://docs.30c.org/djangobook2/chapter06/    
        
        
    
- 常用记录:

    # 用户名与密码
    
        <link rel="stylesheet" href="/static/commons.css">
        <style>label{width: 80px;text-align: right;display: inline-block;}</style>

        <form action="/login/" method="POST">
        //urls.py中的r'^login/' / 与此处保持一致#}
        <p>
            <label for="username">用户名:</label>
            <input id='username'name="user" type="text">
        </p>
        <p>
            <label for="password">密码;</label>
            <input id='password'name="pwd" type="password" >
            <input type="submit"value="提交">
            <span style="color: red">{{ error_msg }}</span>
        </p>
    
    # 添加框、查看详情、删除
        <div>
            <form action="/home" method="POST">
                <input type="text"name="username"placeholder="用户名">
                <input type="text"name="email"placeholder="邮箱">
                <input type="text"name="gender"placeholder="性别">
                <input type="submit"value="添加">
            </form>
        </div>
        
        <div>
            <table>
               {%  for row in user_list %}
               <tr>
                    <td>{{ row.username }}</td>
                    <td>{{ row.email }}</td>
                    <td>{{ row.gender }}</td>
                    <td><a href="/detail?nid={{ row.id }}">查看详细</a>|
                       <a class='del'href="#" row_id="{{ row.id }}">删除</a>
                    </td>
                </tr>
                {% endfor %}
            </table>
        </div>
        
        <div>
            <form action="/del_host"method="POST">
                <input style="display: none"id="nid" type="text" name="nid">
                <p><input type="submit"></p>
                <p><input type="button"></p>
            </form>
        </div>
        
        
        <script src="/static/jquery-1.12.4.js"></script>
        <script>
            $('.del').click(function () {
                var row_id = $(this).attr('row_id');
                $('#nid').val(row_id)
            })
        </script>        
    
   

posted @ 2020-01-18 21:23  badweather  阅读(68)  评论(0编辑  收藏  举报