Django--初始化
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的原理
打开html文件--open()
渲染模板和内容--Template()
返回字符串--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
在app中创建templatetags模块
创建任意 .py 文件,如:xx.py
1234567891011121314from django
import
template
from django.utils.safestring
import
mark_safe
from django.template.base
import
resolve_
var
iable, 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)
在使用自定义simple_tag的html文件开头导入之前创建的 xx.py 文件名
1{% load xx %}
html中使用simple_tag
1234<body>
{% my_simple_time
1
2
3
%}
{% my_input
'id_username'
'hide'
%}
</body>
在settings中配置当前app,不然django无法找到自定义的simple_tag
123456789INSTALLED_APPS = [
'django.contrib.admin'
,
'django.contrib.auth'
,
'django.contrib.contenttypes'
,
'django.contrib.sessions'
,
'django.contrib.messages'
,
'django.contrib.staticfiles'
,
'app01'
,
]
效果:![](https://images2015.cnblogs.com/blog/827870/201603/827870-20160310104938429-1614365906.png)
第一个函数是算加法,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--初始化的更多相关文章
- Django 初始化数据库
django 初始化数据库 刷新数据库guoguos-MacBook-Pro:mysite guoguo$ python manage.py sqlflushBEGIN;SET FOREIGN_KEY ...
- django 初始化项目 和modelviewset 使用
django初始化项目 1.初始化项目结构└─shiyanlou_project │ .gitignore│ README.en.md # 英文│ README.md # 中文项目简介│├─celer ...
- Django初始化之基本操作
1.指定要安装的Django版本 C:\Users\win7>pip install Django==1.11.8 2.查看安装的django版本 C:\Users\win7>pip sh ...
- 【解决方案】django初始化执行python manage.py migrate命令后,除default数据库之外的其他数据库中的表没有创建出来
[问题原因]:django工程中存在多个应用,每个应用都指定了对应的数据库.执行python manage.py migrate命令时没有指定数据库,将只初始化默认的default数据库. [解决方案 ...
- django 初始化 介绍 生命周期
安装好django,配置模板,静态文件 # 创建Django工程 django-admin startproject [工程名称] mysite - mysite # 对整个程序进行配置 - init ...
- django初始化
Django 版本 安装 pip安装 pip install django 安装最新版本的 pip install django==1.11.11 安装指定版本的 验证安装 直接去代码中调用djang ...
- Django 初始化数据库遇到问题(python manage.py migrate)
问题:django.db.utils.InternalError: (1049, "Unknown database 'main'") 在Django 配置的数据库上 执行 cr ...
- python——django使用mysql数据库(二)
上一篇中,我们已经讲述了如何初始化一个django数据库,这一章就来讲讲在实际的项目中如何使用我们初始化的数据库呢? 如还未进行初始化数据库操作,请参考python——django使用mysql数据库 ...
- python学习笔记--Django入门0 安装dangjo
经过这几天的折腾,经历了Django的各种报错,翻译的内容虽然不错,但是与实际的版本有差别,会出现各种奇葩的错误.现在终于找到了解决方法:查看英文原版内容:http://djangobook.com/ ...
- Django学习之七:Django 中间件
目录 Django 中间件 自定义中间件 - - - 大体两种方式 将中间件移除 实例 中间件加载源码阅读 总结 Django 中间件 Tips: 更新日志: 2019.01.31 更新django中 ...
随机推荐
- mybatis 联表查询
一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...
- bzoj 4753 最佳团体
Written with StackEdit. Description \(JSOI\)信息学代表队一共有N名候选人,这些候选人从\(1\)到\(N\)编号.方便起见,\(JYY\)的编号是\(0\) ...
- 3145 code[VS]汉诺塔游戏--递归
3145 汉诺塔游戏 题目描述 Description 汉诺塔问题(又称为河内塔问题),是一个大家熟知的问题.在A,B,C三根柱子上,有n个不同大小的圆盘(假设半径分别为1-n吧),一开始他们都叠在我 ...
- 十大Java人物
James Gosling : Java之父文/陶文 作 为Java之父,James Gosling的名字可谓是耳熟能详.当人们评论一种编程语言时,总喜欢捎带着把下蛋的母鸡一起带上.Java做为中国的 ...
- Tomcat服务器下 catalina.out 日志开关
很多异常在 debug 日志里不会打印,但在 catalina.out 里会打印,比如方法调用找不到,jdk 版本不匹配等.但是打开了该日志开关又会产生一个问题,就是它会哗啦啦的不断急剧膨胀,文件太大 ...
- Maven引入jar包中的配置文件未被识别
我用的办法是直接将jar包中的配置文件复制出来,粘贴到我自己项目中的配置文件中,讯飞语音的jar包就有这种情况.
- 乘积最大(线性dp)
乘积最大 时间限制: 1 Sec 内存限制: 128 MB提交: 4 解决: 4[提交][状态][讨论版][命题人:quanxing] 题目描述 今年是国际数学联盟确定的“2000——世界数学年” ...
- PHP5.6 安装Yaf 2.3.5
Yaf 安装 PHP5.6 安装Yaf 2.3.5 1.下载 https://github.com/laruence/yaf 2.phpize /usr/bin/phpize 3.配置 ./confi ...
- PL/SQL 训练11--包
--所谓包,就是把一组PL/SQL的代码元素组织在一个命名空间下.--一种可以把程序或者其他的PL/SQL元素比如游标.类型.变量的组织结构在一起的结构(包括逻辑结构和物理结构)--包提供了非常重要的 ...
- 操盘策略:KDJ三线合一 必定孕育大牛股
日周月KDJ指标三周期合一是孕育大牛股的必要条件: 炒股看一下周.月线十分有必要,很多时候,周.月线已经死叉下行,中长线趋势走坏,但日线偏偏发出金叉,K线也走好,量价配合也好,而此时介入,多数情况下就 ...