Python探路-Django

前面介绍了了Python中一些高级知识,下面学习分享下基于Python的WEB架构-----Django。

首先介绍下什么是WEB框架,其实就是别人搭好的框框,自己根据项目需求,遵循框架的规则填写自己的东西,以达到实现项目功能,这就是框架本质的意义。

而对于一般的web框架,大概都是这样的:

而Django是怎样的模式呢?它采用的是MTV模式-M(model)模型、T(template)模板和V(view)业务

我仔细研究了下MTV和MVC区别,其实就是改了个说法而已,大家都知道MVC对应的是模型(model)-视图(view)-控制器(controller)的缩写,其实MTV和MVC的对应关系,很对人会问为什么视图中的view到了MTV中的view业务,其实这个和框架结构有关,view到了Django中就成了承载业务的模块了。

MTV的架构如下:

也就是当浏览器通过http请求服务端是首先消息会到达WSGI模块,然后到达路由,再通过路由分发到各自的业务view,而view一般会通过业务处理查询数据库等操作再结合模板返回给浏览器,就成了客户端的界面展示。其实在很多项目中,因为框架自身和客户端响应的原因,是没有模板这一块的,而模板这一块被单独出去了。

下面主要通过一个示例来展示Django框架是怎么用的:

1、首先安装django模块,并加入环境变量:

pip install django

在Python35/Scripts/目录中找到django-admin.exe文件并加入到环境变量中

2、创建django工程:

这里使用编辑工具Pycharm:点击file---->new project

输入项目名称django_test,点击创建,生成如下项目:

3、创建APP:

在每个django项目中可以包含多个APP,相当于一个大型项目中的分系统、子模块、功能部件等等,相互之间比较独立,但也有联系。所有的APP共享项目资源

在pycharm下方的terminal终端中输入命令:

python manage.py startapp cmdb

生成下面的APP:

4、需要在setting文件中进行一些配置:

a、注册APP:

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'cmdb'
)

b、配置数据库:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

5、对于项目需求,还是需要数据库的,下面就根据一个具体的实例来讲解django所有的组件(做一个简单的登陆系统)

一、首先,我们基于需求设计简单的数据库,

models.py的代码如下:

from django.db import models


# Create your models here.
class UserInfo(models.Model):
    user = models.CharField(max_length=32)
    pwd = models.CharField(max_length=32)

然后运行下面这两个命令:

1、python manage.py makemigrations

这个文件就是后面生成数据库表的脚本,每修改一次models文件,再运行上述命令就会生成一个文件,这对于版本安装和升级都是很方便的

2、python manage.py migrate

这个命令就会去执行上述生成的脚本,进而生成数据库

二、数据库生成完成后,这里就需要进行view、template的编码和url的配置了:

1、首先这里写一个view的代码如下:

from django.shortcuts import render
from cmdb import models
import datetime


# Create your views here.
def index(request):
    if request.method == "POST":
        username = request.POST.get("username", None)
        password = request.POST.get("password", None)

        models.UserInfo.objects.create(user=username, pwd=password)

    time_value = str(datetime.date.today())
    user_list = models.UserInfo.objects.all()
    if user_list:
        return render(request, "index.html", {"data": user_list, "time": time_value})
    return render(request, "index.html")

这里主要是一个插入数据库和展示数据库的代码

2、可以看到上述代码使用了html文件,下面生成html文件-index.html在template目录,内容为:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <link href="/static/css/basic.css" rel="stylesheet" type="text/css" />
    </head>
    <body>
    <h1 class="qw">python</h1>
    <form action="/index/" method="post">
        <input type="text" name="username"/>
        <input type="password" name="password"/>
        <input type="submit" value="提交"/>
    </form>
    <br>
    <strong>{{time}}</strong>
    <table>
        <thead >
            <th>user</th>
            <th>password</th>
        </thead>
        <tbody>
            {% for line in data %}
                <tr>
                    <td>{{ line.user }}</td>
                    <td>{{ line.pwd }}</td>
                </tr>
            {% endfor %}
        </tbody>
    </table>

    <srcipt type="text/javascript" src="/static/js/jquery-3.2.1.min.js"></srcipt>
    </body>
</html>

可以看到代码中包含css和js文件,那这些文件是配置在哪个目录下的,这里我们和template同级目录创建static目录,并写入css和js文件,并在setting配置文件中配置,配置如下:

STATIC_URL = '/static/'
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

三、最后编辑url,配置如下:

from django.conf.urls import include, url
from django.contrib import admin
from cmdb import views

urlpatterns = [
    url(r'^index/', views.index),
]

四、整体工程编程完成,最后运行下:

python manage.py runserver 127.0.0.1:8000

效果展示:

输入url:http://localhost:8000/index/

界面:

然后输入如下,并点击提交:

admin/qwe

展示如下:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值