zoukankan      html  css  js  c++  java
  • Django初始配置及大概扫阅

    一、Django 简介

      Django 是一个由 Python 写成的开放源代码的 Web 应用框架。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是 CMS(内容管理系统)软件。并于2005年7月在 BSD 许可证下发布。这套框架是以比利时的吉普赛爵士吉他手 Django Reinhardt 来命名的。由于 Django 的是在一个快节奏的新闻编辑室环境下开发的,它的目的是使常见的 Web 开发任务,快速和容易。

     

    MTV 模式

    Django 采用了 MTV 设计模式

    上述图大概是说:

    1. URL ( urls.py )请求调度,当有缓存页面的时候直接返回内容。
    2. 视图函数( view.py )执行所请求的操作,通常包括读写数据库。
    3. 模型( models.py )定义了 Python 中的数据并与之交互。通常包含在一个关系数据库( MySQL、PostgreSQL SQLite 等),其他数据存储是可能的( XML、文本文件、LDAP、等)。
    4. 请求执行任务后,视图返回一个 HTTP 响应对象(通常是经过数据处理的一个模板)。可选的:视图可以保存一个版本的 HTTP 响应对象,返回携带一个时间戳,来告诉浏览器这个视图的更新时间。
    5. 模板通常返回 HTML 页面。Django 模板语言提供了 HTML 的语法及逻辑。

     


    安装:
    pip3 install django


    C:......Python35Scripts

    二、基本配置

    1、常用命令

    # 查看django版本
    $ python -m django --version
    
    # 创建项目,名为mysite
    $ django-admin startproject mysite
    
    # 启动django
    $ python manage.py runserver
    $ python manage.py runserver 8080
    $ python manage.py runserver 0.0.0.0:8000
    
    # 创建应用程序,确保和 manage.py 是同一目录
    $ python manage.py startapp polls
    
    # 运行创造模型变化迁移
    $ python manage.py makemigrations
    
    # 运行应用模型变化到数据库
    $ python manage.py migrate
    
    # admin创建管理员用户
    $ python manage.py createsuperuser

    注:自动重新加载 runserver,根据需要开发服务器自动重新加载Python代码为每个请求。您不需要重新启动服务器代码更改生效。然而,像添加文件某些操作不触发重新启动,所以你必须重新启动在这些情况下的服务器。

    基本目录结构及作用:

    mysite/              # 项目的容器,名字随便起
        manage.py        # 命令行实用工具,以各种方式与该Django项目进行交互
        mysite/          # 实际的Python项目
            __init__.py  # 空文件,导入不出错
            settings.py  # 这个Django项目配置
            urls.py      # 这个Django项目的URL声明; 一个Django驱动网站的“目录”
            wsgi.py      # 一个入口点为WSGI兼容的Web服务器,以满足您的项目

    Django

    pip3 install django


    C:Python35Scripts

    # 创建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



    # 运行Django功能
    python manage.py runserver 127.0.0.1:8001


    chouti
      - chouti
      - 配置
      - 主站 app
      - 后台管理 app



    # 创建app
      python manage.py startapp cmdb
      python manage.py startapp openstack
    p  ython manage.py startapp xxoo....

    app:
      migrations 数据修改表结构
      admin Django为我们提供的后台管理
      apps 配置当前app
      models ORM,写指定的类 通过命令可以创建数据库结构
      tests 单元测试
      views 业务代码

    1、配置模板的路径
        
            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',
                            ],
                        },
                    },
                ]
        2、配置静态目录
            static
        
            STATICFILES_DIRS = (
                os.path.join(BASE_DIR, 'static'),
            )
    
            
            <link rel="stylesheet" href="/static/commons.css" />

    内容整理
    1. 创建Django工程
    django-admin startproject 工程名

    2. 创建APP
    cd 工程名
    python manage.py startapp cmdb

    3、静态文件
    project.settings.py

    STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
    )

    4、模板路径

    DIRS ==> [os.path.join(BASE_DIR,'templates'),]

    5、settings中

    middlerware

    # 注释 csrf


    6、定义路由规则
    url.py

    "login" --> 函数名

    7、定义视图函数

    app下views.py

    def func(request):
    # request.method GET / POST

    # http://127.0.0.1:8009/home?nid=123&name=alex
    # request.GET.get('',None) # 获取请求发来的而数据

    # request.POST.get('',None)


    # return HttpResponse("字符串")
    # return render(request, "HTML模板的路径")
    # return redirect('/只能填URL')

    8、模板渲染
    特殊的模板语言

    -- {{ 变量名 }}

    def func(request):
    return render(request, "index.html", {'current_user': "alex"})


    index.html

    <html>
    ..
    <body>
    <div>{{current_user}}</div>
    </body>

    </html>

    ====> 最后生成的字符串

    <html>
    ..
    <body>
    <div>alex</div>
    </body>

    </html>
    -- For循环
    def func(request):
    return render(request, "index.html", {'current_user': "alex", 'user_list': ['alex','eric']})


    index.html

    <html>
    ..
    <body>
    <div>{{current_user}}</div>

    <ul>
    {% for row in user_list %}

    {% if row == "alex" %}
    <li>{{ row }}</li>
    {% endif %}

    {% endfor %}
    </ul>

    </body>

    </html>

    #####索引#################
    def func(request):
    return render(request, "index.html", {
    'current_user': "alex",
    'user_list': ['alex','eric'],
    'user_dict': {'k1': 'v1', 'k2': 'v2'}})


    index.html

    <html>
    ..
    <body>
    <div>{{current_user}}</div>

    <a> {{ user_list.1 }} </a>
    <a> {{ user_dict.k1 }} </a>
    <a> {{ user_dict.k2 }} </a>

    </body>

    </html>

    ###### 条件

    def func(request):
    return render(request, "index.html", {
    'current_user': "alex",
    "age": 18,
    'user_list': ['alex','eric'],
    'user_dict': {'k1': 'v1', 'k2': 'v2'}})


    index.html

    <html>
    ..
    <body>
    <div>{{current_user}}</div>

    <a> {{ user_list.1 }} </a>
    <a> {{ user_dict.k1 }} </a>
    <a> {{ user_dict.k2 }} </a>

    {% if age %}
    <a>有年龄</a>
    {% if age > 16 %}
    <a>老男人</a>
    {% else %}
    <a>小鲜肉</a>
    {% endif %}
    {% else %}
    <a>无年龄</a>
    {% endif %}
    </body>

    </html>



    XXOO管理:
    MySQL
    SQLAlchemy
    主机管理(8列):
    IP
    端口
    业务线
    ...

    用户表:
    用户名
    密码

    功能:
    1、 登录
    2、主机管理页面
    - 查看所有的主机信息(4列)
    - 增加主机信息(8列) ** 模态对话框
    3、查看详细
    url:
    "detail" -> detail

    def detail(reqeust):
    nid = request.GET.get("nid")
    v = select * from tb where id = nid
    ...
    4、删除
    del_host -> delete_host

    def delete_host(request):
    nid = request.POST.get('nid')
    delete from tb where id = nid
    return redirect('/home')


  • 相关阅读:
    jQuery仿yahoo首页弹出层效果
    显示中文的星期几
    Oracle 會話級Session誤解
    异常处理點滴
    DataGrid 呈現數據——綁定與編程混合
    document.body.scrollTop 值总为0的解决方法(转载)
    DataGridView 一些設置
    事務回滾之實例
    数据库表设计下手
    WebApp匯入CSV資料
  • 原文地址:https://www.cnblogs.com/King-of-Knight/p/9221457.html
Copyright © 2011-2022 走看看