1、Django介绍

它是一个WEB框架

  • Django--大而全

  • tornado、flask--小而精

2、Django安装

https://www.djangoproject.com/download/

3、创建django程序

  • 手动创建

file--new project--Django--Location--create(打开后最好不要有上层目录)

  • 命令创建

cmd>django-admin startproject sitename


4、程序目录

各文件作用:
  • settings.py--配置文件

  • urls.py--路由

  • wsgi.py--用那种wsgi方式(wsgi或者uwsgi)

  • templates--html模板

  • manage.py--主程序,启动程序

注意:不要轻易更改项目的名称,涉及的地方太多。
还有其他目录:

app--项目里的一个扩展,可以有多个,如前台和后台

5、 创建app目录

cmd> python manage.py startapp app01

app目录--项目里的一个扩展,可以有多个,如前台和后台

--models.py,对数据库进行操作

--views.py,视图,函数

--tests.py,测试用

--admin.py,后台管理程序  http://127.0.0.1:8000/admin/

6、生成超级用户

没有数据库要先创建表,不然生成用户会报错:no such table:auth_user

cmd> python manage.py syncdb

cmd> yes

此时创建的用户就能进入后台管理,另外生成了一个db.sqlite3数据库文件,用sqlite工具能看到具体信息,如navicat等。

如果要生成到mysql数据库,需要在settings.py里配置。

创建超级用户:

cmd> python manage.py createsuperuser

在后台的用户表里就能看到用户user和group了

7、启动服务

cmd> python manage.py runserver 127.0.0.1:8000

8、第一个Django程序

路由--urls.py
1
2
3
4
5
from app01 import views
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^home/', views.home),
]
请求处理--views.py
1
2
3
from django.shortcuts import HttpResponse     
def home(request):                          //必要参数request,包含请求的全部信息。
    return HttpResponse("ok")               //Django返回的字符串需要用HttpResponse()包装,不能直接返回字符串。

9、模板渲染

路由--urls.py

同上

请求处理--views.py
1
2
3
4
from django.shortcuts import render
dic={'arg':'home1',}
def home(request):
    return render(request,'home.html',dic)  #读取home.html,并返回给请求者,dic是参数,传到页面中
模板--templates/home.html
1
2
3
4
from django.shortcuts import render
dic={'arg':'home1','user_list':['user1','user2']}
def home(request):
    return render(request,'home.html',dic)  #读取home.html,并返回给请求者,dic是参数,传到页面中

10、render的原理

  1. 打开html文件--open()

  2. 渲染模板和内容--Template()

  3. 返回字符串--HttpResponse()

1
2
3
4
5
6
7
8
9
10
import datetime
from django import template
import DjangoDemo.settings
  
now = datetime.datetime.now()
fp = open(settings.BASE_DIR+'/templates/Home/Index.html')
t = template.Template(fp.read())
fp.close()
html = t.render(template.Context({'current_date': now}))
return HttpResponse(html)

11、模板语言

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

  • {{ 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 }}

方法有限,如果想使用跟多模板方法,需要自定义,看下面一节。

12、自定义方法--simple_tag

  1. 在app中创建templatetags模块

  2. 创建任意 .py 文件,如:xx.py

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    from django import template
    from django.utils.safestring import mark_safe
    from django.template.base import resolve_variable, Node, TemplateSyntaxError
       
    register = template.Library()
       
    @register.simple_tag
    def my_simple_time(v1,v2,v3):
        return  v1 + v2 + v3
       
    @register.simple_tag
    def my_input(id,arg):
        result = "<input type='text' id='%s' class='%s' />" %(id,arg,)
        return mark_safe(result)
  3. 在使用自定义simple_tag的html文件开头导入之前创建的 xx.py 文件名

    1
    {% load xx %}
  4. html中使用simple_tag

    1
    2
    3
    4
    <body>
        {% my_simple_time 1 2 3%}
        {% my_input 'id_username' 'hide'%}
    </body>
  5. 在settings中配置当前app,不然django无法找到自定义的simple_tag 

    1
    2
    3
    4
    5
    6
    7
    8
    9
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'app01',
    ]
效果:
  • 第一个函数是算加法,1、2、3是参数;

  • 第二个函数是写一个标签,'id_username' 'hide'是参数。

13、母版,子版,include

templates里创建一个目录:master,目录里创建文件mother.html和son.html

母版mother.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<head>
    <meta charset="UTF-8">
    <title>{% block title %}{% endblock %}</title>
    <style>
        .header{
            height: 48px;
            background-color: red;
        }
        .body{
            background-color: antiquewhite;
        }
        .body .menu{
            background-color: aqua;
            width: 20%;
            float: left;
        }
        .body .content{
            background-color: aquamarine;
            width: 80%;
            float: left;
        }
    </style>
</head>
<body>
    <div class="header">LOGO</div>
    <div class="body">
        <div class="menu">左侧菜单</div>
        <div class="content">{% block content %}{% endblock %}</div>
    </div>
</body>
</html>
子版son.html
1
2
3
4
5
6
7
8
9
10
{% extends "master/mother.html" %}
 
{% block title %}
    母版子版
{% endblock %}
 
{% block content %}
    <h1>Son的右侧内容</h1>
    {% include "include/input_group.html" %}
{% endblock %}
路由urls.py
1
2
3
4
5
from app01 import views
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^son/', views.son),
]
视图views.py
1
2
3
from django.shortcuts import render
def son(request):
    return render(request,'master/son.html')
给son添加include内容,include功能

input_group.html
1
2
3
4
5
<h1>Include输入组合</h1>
<input type="text" />
<input type="text" />
<input type="text" />
<input type="text" />
效果:

注意点:
  • 母版只能继承一个。

  • 当某一小块功能用在很多页面中,用include。

  • son加css样式,{% block css %}{% endblock %}

  • son加js,{% block js %}{% endblock %}

14、Django中的静态文件

创建目录

配置文件settings​.py
1
2
3
4
STATIC_URL = '/static/'
STATICFILES_DIRS = (
    os.path.join(BASE_DIR,'static'),
)
调用
1
<link ref="stylesheet" href="/static/css/common.css">

Django--初始化的更多相关文章

  1. Django 初始化数据库

    django 初始化数据库 刷新数据库guoguos-MacBook-Pro:mysite guoguo$ python manage.py sqlflushBEGIN;SET FOREIGN_KEY ...

  2. django 初始化项目 和modelviewset 使用

    django初始化项目 1.初始化项目结构└─shiyanlou_project │ .gitignore│ README.en.md # 英文│ README.md # 中文项目简介│├─celer ...

  3. Django初始化之基本操作

    1.指定要安装的Django版本 C:\Users\win7>pip install Django==1.11.8 2.查看安装的django版本 C:\Users\win7>pip sh ...

  4. 【解决方案】django初始化执行python manage.py migrate命令后,除default数据库之外的其他数据库中的表没有创建出来

    [问题原因]:django工程中存在多个应用,每个应用都指定了对应的数据库.执行python manage.py migrate命令时没有指定数据库,将只初始化默认的default数据库. [解决方案 ...

  5. django 初始化 介绍 生命周期

    安装好django,配置模板,静态文件 # 创建Django工程 django-admin startproject [工程名称] mysite - mysite # 对整个程序进行配置 - init ...

  6. django初始化

    Django 版本 安装 pip安装 pip install django 安装最新版本的 pip install django==1.11.11 安装指定版本的 验证安装 直接去代码中调用djang ...

  7. Django 初始化数据库遇到问题(python manage.py migrate)

    问题:django.db.utils.InternalError: (1049, "Unknown database 'main'") 在Django 配置的数据库上 执行  cr ...

  8. python——django使用mysql数据库(二)

    上一篇中,我们已经讲述了如何初始化一个django数据库,这一章就来讲讲在实际的项目中如何使用我们初始化的数据库呢? 如还未进行初始化数据库操作,请参考python——django使用mysql数据库 ...

  9. python学习笔记--Django入门0 安装dangjo

    经过这几天的折腾,经历了Django的各种报错,翻译的内容虽然不错,但是与实际的版本有差别,会出现各种奇葩的错误.现在终于找到了解决方法:查看英文原版内容:http://djangobook.com/ ...

  10. Django学习之七:Django 中间件

    目录 Django 中间件 自定义中间件 - - - 大体两种方式 将中间件移除 实例 中间件加载源码阅读 总结 Django 中间件 Tips: 更新日志: 2019.01.31 更新django中 ...

随机推荐

  1. win7下破解无线网密码

    很多朋友喜欢做一些比较有成就感的事情,例如破解别人的密码,现在破解的方式大部分还是以跑字典这种没有任何技术含量的手段进行,那么破解的成功与否就和我们的字典有很多的关系了,本次经验就来教大家怎样进行字典 ...

  2. 关于matlab浮点转定点总结

    1,算式长度不应该太长,否则在转换过程中提示位宽超过128位,(用的64位matlab),长算式改为短算式就可以了. 2,不要过于相信推荐字长,有些地方需要更高的精度,如果用推荐字长,可能结果误差较大 ...

  3. bzoj 3202 [Sdoi2013]项链——容斥+置换+推式子

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3202 可见Zinn博客:https://www.cnblogs.com/Zinn/p/100 ...

  4. (7)Stream简介

    流的个人理解: 怎样获得流: 怎样处理流: 中间操作和终端操作介绍: 中间操作和终端操作的使用: 流的个人理解: Stream也就是流,他和IO流不一样,他是java8诞生的东西,我对他的理解就是一个 ...

  5. Linux修复磁盘操作

    Linux修复磁盘操作 1.卸载分区 umount /data 修复磁盘,先判读是磁盘坏了,还是文件系统坏了:一般可以修复,但是建议换磁盘. 2.fsck  -y /dev/sda1  ##-y 参数 ...

  6. Java开发进阶技能(附文章引用链接)

    一.玩转源码 1.Java+Selenium3方法篇0-如何在Eclipse上查看Selenium源码 (在github上下载源码)

  7. thinkphp线上自动加载异常与修复

    项目遇到一个奇怪的问题,本地代码正常,服务器上却不正常. 经过测试,应该是自动加载出了问题,尝试了各种方法, 1.手动加载,发现好麻烦,没完没了. 2.自己写自动加载,写不出来,尴尬. 3.修改配置, ...

  8. 字符串,字符数组(C/C++)

    这个地方困惑我好久了,废话不多说 char c1[]="12345"; char *c2="12345"; string c3="12345" ...

  9. BugkuCTF WEB

    web2 打开链接,一大堆表情 查看源代码 得到 flag 文件上传测试 打开链接 选择 1 个 jpg 文件进行上传,用 burp 抓包改包 将 php 改为 jpg,发包 得到 flag 计算器 ...

  10. 本人编写的一份前端vue面试题

    说明,此题目本人自出,做过本人所在公司的前端面试题,在此共享给大家 1. 如何在vue组件中实现v-model的功能?(只需给出关键代码) 2. 简述你知道的生命周期函数和执行时机 3. 谈谈你对计算 ...