DjangoWeb开发框架入门

Posted RobotsRising

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DjangoWeb开发框架入门相关的知识,希望对你有一定的参考价值。

1、WEB框架

1.1、MVC框架

Model View Controller
数据库 视图 业务处理

1.2、MTV框架

Model Template View
数据库 模板文件 业务处理

2、Django的安装

  pip3 install django

3、Django工程创建

3.1、创建Django工程

  命令行:django-admin startproject 工程名

  例如:使用命令"django-admin startproject mysite"创建mysite工程,mysite工程的目录结构及文件用途如下:

    mysite

      - mysite                     # 对整个程序进行配置

        - init            

                             - settings    # 配置文件

        - url             # URL对应关系

                             - wsgi          # 遵循WSGI规范, 正常部署时使用 uwsgi + nginx

                      - manage.py             # 管理Django程序

  manage.py支持的命令如下:

    具体参考链接如下:https://blog.csdn.net/luanpeng825485697/article/details/79254716

    "python manage.py startapp xx":创建app xx

    "python manage.py makemigrations":根据检测到的模型创建新的迁移

    "python manage.py migrate":使数据库状态与当前模型集和迁移集同步

3.2、运行Django功能

  命令行:python manage.py runserver 127.0.0.1:8001

3.3、Django的app

  app文件夹的内容:

    migrations:数据修改表结构

    admin:Django为我们提供的后台管理

    apps:配置当前app

    models:ORM,写指定的类,通过命令可以创建数据库结构

    tests:单元测试

    views:业务代码

4、新建Django工程后的配置

4.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\',
            ],
        },
    },
]
View Code

4.2、配置静态目录

  首先在Django工程中创建"static"文件夹。

  在settings.py中添加如下代码:

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, \'static\'),
)
View Code

4.3、屏蔽跨站请求伪造csrf中间件

MIDDLEWARE = [
    \'django.middleware.security.SecurityMiddleware\',
    \'django.contrib.sessions.middleware.SessionMiddleware\',
    \'django.middleware.common.CommonMiddleware\',
    # \'django.middleware.csrf.CsrfViewMiddleware\',
    \'django.contrib.auth.middleware.AuthenticationMiddleware\',
    \'django.contrib.messages.middleware.MessageMiddleware\',
    \'django.middleware.clickjacking.XFrameOptionsMiddleware\',
]
View Code

5、添加路由规则

  在urls.py中添加路由规则,如果需要用到正则表达式,则需要导入re_path。Django版本为2.0.4。具体示例如下:

from django.contrib import admin
from django.urls import path,re_path
from cmdb import views

urlpatterns = [
    path(\'admin/\', admin.site.urls),
    path(\'login\', views.login),
    path(\'home\', views.home),
    path(\'detail\', views.detail),
    path(\'delete\', views.delete),
    path(\'add\', views.add),
    path(\'Login.html\', views.login),
    path(\'modify\', views.modify),
    path(\'register\', views.register),
]
View Code

6、定义视图函数

6.1、在app下的views,py中添加视图函数:

def login(request):
    if request.method == \'POST\':
        username = request.POST.get(\'username\', None)
        password = request.POST.get(\'password\', None)
        print(username, password)
        user_obj = s.query(orm_fk.UserInfo).filter_by(user=username).first()
        print(user_obj.user, user_obj.password)
        if user_obj.password == password:
            return redirect(\'/home\')
    return render(request,\'Login.html\')
View Code

6.2、请求的处理  

request:请求的内容;

  request.method:请求的方法,包括GET/POST等;

    GET方法:

    if request.method == \'GET\':
        nid = request.GET.get(\'nid\', None)

    POST方法:

    if request.method == \'POST\':
        username = request.POST.get(\'username\', None)
        password = request.POST.get(\'password\', None)

6.3、返回数据

  返回数据有三种方式:

    return HttpResponse("字符串")

    return render(request, "HTML模板的路径")

    return redirect(\'/只能填URL\')

7、模板渲染

7.1、视图函数中传入字典

    通过从render方法传入字典来渲染模板。

def home(request):
    add_infos = [\'ip\', \'port\', \'name\', \'service\', \'system\', \'address\']
    host_lists = s.query(orm_fk.HostInfo)
    return render(request, \'home.html\', {\'host_lists\':host_lists, \'add_infos\':add_infos})
View Code

7.2、html中模板语言的使用

7.2.1、for循环

  其中host_lists是视图函数中render()方法传入的要渲染的数据。

{% for item in host_lists %}
    <tr>
        <td>{{ item.id }}</td>
        <td class="active" name="ip">{{ item.ip }}</td>
        <td class="success">{{ item.port }}</td>
        <td class="">{{ item.name }}</td>
        <td class="danger">{{ item.service }}</td>
        <td class="success">
            <a href="/detail?nid={{ item.id }}">详细信息</a>
        </td>
        <td class="warning">
            <a href="delete?nid={{ item.id }}">删除</a>
        </td>
    </tr>
{% endfor %}      
View Code

7.2.2、if条件语句

{% for key,value in host_lists.items %}
   {% if key == "id" %}
        <div class="form-group" style="display: none">
            <label for="inputName" class="col-md-3 control-label">
                {{ key }}</label>
            <div class="col-md-9">
                <div class="input-icon right">
{#                                            <i class="fa fa-user"></i>#}
                    <input id="input{{ key }}" type="text" name="{{ key }}" placeholder="" class="form-control" value="{{ value }}"></div>
            </div>
        </div>
   {% else %}
        <div class="form-group">
            <label for="inputName" class="col-md-3 control-label">
                {{ key }}</label>
            <div class="col-md-9">
                <div class="input-icon right">
{#                                            <i class="fa fa-user"></i>#}
                    <input id="input{{ key }}" type="text" name="{{ key }}" placeholder="" class="form-control" value="{{ value }}"></div>
            </div>
        </div>
   {% endif %}
{%  endfor %}
View Code

8、作业

8.1、要求:    

  1、实现主机管理页面,主机信息包括:IP、端口、业务线、主机名、主机系统、主机位置;用户信息包括:用户名、密码、邮箱、first name、last name、性别;

  2、使用ORM框架:SQLAlchemy操作mysql数据库;

  3、功能:

    a、实现注册页面,将注册的用户信息存储在MySQL数据库中;

    b、实现登录页面,读取数据库中用户信息判断是否登录成功,成功则转到主机管理页面,否则保持在登录界面;

    c、实现主机管理页面:能够查看所有的主机信息(4列主要数据),能够使用模态对话框增加主机的详细信息(7列所有数据);

    d、查看详细信息,并可在该页面修改主机信息;

    e、删除主机信息,可以从主机管理页面删除主机信息。

8.2、实现:

8.2.1、注册页面

8.2.2、登录页面

8.2.3、主机管理页面

                         

 

8.2.4、详细信息页面

 

以上是关于DjangoWeb开发框架入门的主要内容,如果未能解决你的问题,请参考以下文章

python教程入门学习Django应用开发框架的优点和缺点!!

Django入门

DjangoWeb应用开发经由

python 使用django库进行Web 开发

推荐net开发cad入门阅读代码片段

走近代码之Python--爬虫框架Scrapy