博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
web框架-(二)Django基础
阅读量:6163 次
发布时间:2019-06-21

本文共 3436 字,大约阅读时间需要 11 分钟。

上面我们已经知道Python的WEB框架有Django、Tornado、Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM、模型绑定、模板引擎、缓存、Session等诸多功能。今天就一起来学习下Django;

一、准备工作

1)打开cmd,进入到python安装路径下的Scripts;2)使用pip安装:pip install Django3)添加环境变量:python安装路径下的Scripts;

二、基本配置

1. 创建django程序

  • 终端命令:django-admin startproject sitename
  • IDE创建Django程序时,本质上都是自动执行上述命令

目录结构如下:

2. 配置文件

1)数据库:

DATABASES = {    'default': {    'ENGINE': 'django.db.backends.mysql',    'NAME':'dbname',    'USER': 'root',    'PASSWORD': 'xxx',    'HOST': '',    'PORT': '',    }}

2)模板:

TEMPLATE_DIRS = (        os.path.join(BASE_DIR,'templates'),    )

3)静态文件:

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

三、功能分类

1. 创建APP

# 切换到Django项目目录,执行命令python manage.py startapp cmdb # 目录结构- cmdb    - migrations  #数据库操作记录(只是修改表结构的记录)    - init      #表示python数据包(python3中有无均可)    - admin      #Django为我们提供的后台管理    - apps      #配置当前app    - models     #创建数据库表结构,写指定的类,通过命令可以创建数据库结构    - tests      #单元测试    - views      #写业务逻辑代码,最重要的就是这个文件了

2. 简单实例

1)登录实例

templates下生成html文件,如login.html

    
Title

{

{error_msg}}

修改url文件,定义路由规则

from django.conf.urls import urlfrom django.contrib import adminfrom cmdb import viewsurlpatterns = [    url(r'^admin/', admin.site.urls),    url(r'^login', views.login),]

定义视图函数:app下views.py

from django.shortcuts import render# Create your views here.from django.shortcuts import HttpResponsefrom django.shortcuts import renderfrom django.shortcuts import redirectimport timeUSER_LIST=[    {'username':'alex','email':'lei10@qq.com','gender':'男'},    {'username':'cc','email':'lei12@qq.com','gender':'男'},    {'username':'tt','email':'lei13@qq.com','gender':'女'}]def home(request):    if request.method=="POST":        u = request.POST.get("username");        e = request.POST.get("email");        g = request.POST.get("gender");        temp = {'username':u,'email':e,"gender":g}        USER_LIST.append(temp)    return render(request,"home.html",{"user_list":USER_LIST})def login(request):    error_msg=""    if request.method=="POST":        user = request.POST.get('user',None);        pwd = request.POST.get('pwd',None);        if user=="root" and pwd=="111111":            return redirect("/home/")        elif user=="":            error_msg="用户名不能为空!"        elif pwd == "":            error_msg = "密码不能为空!"        else:            error_msg="用户名或密码错误!";    return render(request,"login.html",{'error_msg':error_msg})

浏览器访问http://127.0.0.1:8000/login显示login.html写的登录页面,可输入登录信息查看页面显示

 

通过上面的例子我们可以知道Django的生命周期:

-> URL对应关系(匹配) -> 视图函数 -> 返回用户字符串

-> URL对应关系(匹配) -> 视图函数 -> 打开一个HTML文件,读取内容

2)其他

request.GET.get('',None) # 获取get请求发来的数据request.POST.get('',None) # 获取post请求发来的数据return HttpResponse("字符串")return render(request, "HTML模板的路径")return redirect('/只能填URL')

3. 模板

上面实例中的login.html就是模板;对于模版,其实就是读取模版(其中嵌套着模版标签),然后将 Model 中获取的数据插入到模版中,最后将信息返回给用户。

模板中也有自己的语言,该语言可以实现数据展示

  • {
    { item }}
  • {% for item in item_list %}  <a>{
    { item }}</a>  {% endfor %}
  •   forloop.counter
  •   forloop.first
  •   forloop.last 
  • {% if ordered_warranty %}  {% else %} {% endif %}
  • 母板:{% block title %}{% endblock %}
  • 子板:{% extends "base.html" %}
  •    {% block title %}{% endblock %}
  • 帮助方法:
  • {
    { item.event_start|date:"Y-m-d H:i:s"}}
  • {
    { bio|truncatewords:"30" }}
  • {
    { my_list|first|upper }}
  • {
    { name|lower }}

转载于:https://www.cnblogs.com/cocc/p/6147931.html

你可能感兴趣的文章
闲说HeartBeat心跳包和TCP协议的KeepAlive机制
查看>>
MoSQL
查看>>
Hibernate多对一外键单向关联(Annotation配置)
查看>>
《CLR via C#》读书笔记 之 方法
查看>>
设计模式:组合模式(Composite Pattern)
查看>>
ContentValues 和HashTable区别
查看>>
LogicalDOC 6.6.2 发布,文档管理系统
查看>>
给PowerShell脚本传递参数
查看>>
实战2——Hadoop的日志分析
查看>>
利用FIFO进行文件拷贝一例
查看>>
Ecshop安装过程中的的问题:cls_image::gd_version()和不支持JPEG
查看>>
resmgr:cpu quantum等待事件
查看>>
一个屌丝程序猿的人生(六十六)
查看>>
Java 编码 UTF-8
查看>>
SpringMVC实战(注解)
查看>>
关于静态属性和静态函数
查看>>
进程的基本属性:进程ID、父进程ID、进程组ID、会话和控制终端
查看>>
spring+jotm+ibatis+mysql实现JTA分布式事务
查看>>
MyBatis启动:MapperStatement创建
查看>>
调查问卷相关
查看>>