zoukankan      html  css  js  c++  java
  • 【Python实战】Django建站笔记

    前一段时间,用Django搭建一个报表分析的网站;借此正好整理一下笔记。

    1. 安装

    python有包管理工具pip,直接cd Python27/Scripts,输入

    pip install django
    
    # install by version
    pip install --upgrade Django==<version>
    

    安装完成后,python -c "import django; print(django.get_version())",若能打印出Django的版本信息,即说明安装成功。一般地,Django安装在Python27/Lib/site-package/django目录。

    2. Django介绍

    项目

    Django的架构是MTV(Model-Template-View)。输入命令

    python <path>/Python27/Lib/site-packages/django/bin/django-admin.py startproject mysite
    

    创建mysite的Django项目,项目的文件目录如下:

    mysite/ 
        manage.py 
        mysite/ 
            __init__.py 
            settings.py 
            urls.py 
            wsgi.py
    
    • 最外层的mysite目录包含了整个项目,与Django没有半毛钱的直接关系,可改名。
    • manage.py提供对项目的命令行(command-line)操作,比如:python manage.py runserver开启服务,默认端口号为8000(若开启端口号为8888,则python manage.py runserver 8888)。
    • 内层的mysite文件夹是python package,与项目名相对应。
    • __init__.py为空文件,表示mysite是一个package。
    • settings.py为项目的配置文件。
    • wsgi.py为WSGI-compatible web servers。

    app

    输入python manage.py startapp polls,为项目创建了Polls app,文件目录结构如下:

    polls/
        __init__.py
        admin.py
        apps.py
        migrations/
            __init__.py
        models.py
        tests.py
        views.py
    

    app定义网站内容view与model层,view.py定义网站数据的获取,而网页格式规范是在HTML Template中所定义的。比如,在source.html中定义网页:

    {% extends "base.html" %}
    
    {% block main %}
    <table class="info" cellspacing="0" width="100%">
        <thead>...</thead>
        <tbody>
            <tr>
                <td>{{firstWeekDay}}</td>
            </tr>
        </tbody>
    </table>
    

    通过view层向html注入数据(通过context给HTML中定义变量赋值):

    # views.py
    from django.shortcuts import render_to_response
    
    
    def source(request):
        context = {}
        context.update(firstWeekDay=fourWeek[0])
        return render_to_response('source.html', context)
    

    上面通过命令建项目的方式可能过于繁琐,PyCharm是IDE中不错一个选择,可用来快速构建Django项目。

    3. 实战

    循环注入

    Django支持注入数据的格式为迭代集合如tuple、list等,用for循环依次取出:

    <!-- list -->
    <tbody>
        <tr>
            <td>{{firstWeekDay}}</td>
            {% for pv in firstWeekPv %}
                <td>{{pv}}</td>
            {% endfor %}
        </tr>
    </tbody>
    
    <!-- list of tuple -->
    <tbody>
        {% for ad in adParent %}
            <tr>
                <td>{{ad.0}}</td>
                <td>{{ad.1}}</td>
                <td>{{ad.2}}</td>
                <td>{{ad.3}}</td>
            </tr>
        {% endfor %}
    </tbdoy>
    

    静态导入

    Django同时支持导入静态css、js文件等,建议使用绝对路径作为root;这些配置信息须在settings.py中添加:

    STATIC_ROOT = '<path>/to/static'
    # Static files (CSS, JavaScript, Images)
    # https://docs.djangoproject.com/en/1.7/howto/static-files/
    
    STATIC_URL = '/static/'
    
    # Additional locations of static files
    STATICFILES_DIRS = (
        # Put strings here, like "/home/html/static" or "C:/www/django/static".
        # Always use forward slashes, even on Windows.
        # Don't forget to use absolute paths, not relative paths.
        ('css', os.path.join(STATIC_ROOT, 'css').replace('\', '/')),
        ('js', os.path.join(STATIC_ROOT, 'js').replace('\', '/')),
        ('images', os.path.join(STATIC_ROOT, 'images').replace('\', '/'))
    )
    

    如此,可以在HTML中自由地导入相对路径了:

    <link rel="stylesheet" type="text/css" href="/static/css/style.css"/>
    
    <script type="text/javascript" src="/static/js/jquery-1.11.3.min.js"></script>
    <script type="text/javascript" src="/static/js/jquery.dataTables.min.js"></script>
    
  • 相关阅读:
    [TensorFlow]TensorFlow安装方法
    [Linux]CentOS与终端破墙
    [JavaScript,Java,C#,C++,Ruby,Perl,PHP,Python][转]流式接口(Fluent interface)
    ROS中阶笔记(十一):ROS 2.0
    ROS中阶笔记(十):ROS机器人综合应用
    ROS中阶笔记(九):Movelt!机械臂控制
    ROS中阶笔记(八):机器人SLAM与自主导航—机器人自主导航
    ROS中阶笔记(七):机器人SLAM与自主导航—SLAM功能包的使用
    ROS中阶笔记(六):机器人感知—机器语音
    ROS中阶笔记(五):机器人感知—机器视觉
  • 原文地址:https://www.cnblogs.com/en-heng/p/5414042.html
Copyright © 2011-2022 走看看