tree #树形显示项目目录结构
django页面模板标签
1.注释
{# 这是一个注释 #}
2.循坏
{% for tmp in list %}
...
{% endfor %}
3.判断
{% if condition %}
...
{% elif condition2 %}
...
{% else %}
...
{% endif %}
4.页面包含
{% include "1.html" %}
创建项目
django-admin.py startproject demo
将项目最外层目录首字母改为大写,方便区分目录
mv demo Demo
cd Demo
一、简单页面访问
(1)方法
vi demo/view.py
from django.http import HttpResponse
def hello(request):
return HttpResponse("Hello world ! ")
(2)配置路由
vi demo/urls.py
from django.conf.urls import url
from . import view
urlpatterns = [
url(r'^$', view.hello), #初始目录,可选
url(r'^hello$', view.hello), #注意逗号不要丢
]
(3)加入自己的服务器ip
vi demo/settings.py
ALLOWED_HOSTS = ['gpo2.sl.xx.com']
(4)启动项目,端口可改
python3 manage.py runserver 0.0.0.0:8080 #ctrl + c 停止服务
二、加入模板方式
cd demo
mkdir templates
cd templates
vi hello.html
{{hello}} #显示后台变量
cd ..
vi settings.py #加入模板路径
'DIRS': [BASE_DIR+"/demo/templates",],
vi view.py
from django.shortcuts import render
def hello(request):
context = {}
context['hello'] = 'hello world'
return render(request, 'hello.html', context)
#重定向方式 return http.HttpResponseRedirect(urls.reverse('方法的路由名'))
新建django项目步骤:
一、新建项目
django-admin.py startproject demo #新建项目
mv demo Demo #将项目最外层目录首字母改为大写,方便区分目录
cd Demo
cd demo
二、新建core模块
python3 ../manage.py startapp core #新建core模块
mkdir templates #新建页面模块目录
cd templates
mkdir core #新建core页面模块目录
cd ../.. #返回到Demo目录下
python3 manage.py migrate #初始化migrate文件,会生成一个db.sqlite3数据库文件
三、配置model文件
vi demo/core/models.py
from django.db import models
class Book(models.Model):
name = models.CharField(max_length=20)
author = models.CharField(max_length=20)
四、配置文件(ip、目录)
vi demo/core/settings.py
ALLOWED_HOSTS = ['gpo2.sl.xx.com'] #允许ip
INSTALLED_APPS 中增加一行 'demo.core', #控制层目录
TEMPLATES 的DIRS中增加 os.path.join(BASE_DIR, 'demo/templates') #页面目录
五、建表
python3 manage.py makemigrations core #生成创建数据表脚本文件
python3 manage.py migrate #创建book表
sqlite3 db.sqlite3
.tables #可以看到有一个core_book表
.schema core_book #查看表结构,id自动生成
.quit #退出
cd demo
六、路由配置
(1)vi urls.py #总路由
from django.conf import urls
from django.contrib import admin
urlpatterns = [
urls.url(r'^admin/', admin.site.urls),
urls.url(r'', urls.include('demo.core.urls')), #包含core目录下url文件
]
(2)vi core/urls.py #core模块路由
from django.conf import urls
from django.views import generic
from demo.core import views
urlpatterns = [
urls.url(r'^books/$', views.books),
urls.url(r'^create-book$', views.create_book),
urls.url(r'^delete-book/$', views.delete_book),
urls.url(r'^view-book/$', views.view_book),
urls.url(r'^update-book$', views.update_book)
]
七、后台处理文件
vi core/view.py
from django.apps import apps
from django.shortcuts import render,redirect
from django.views import generic
from demo.core import models
def books(request):
books = models.Book.objects.all()
context = { 'books': books }
return render(request, 'core/books.html', context)
def create_book(request):
if request.method == 'GET':
return render(request, 'core/create-book.html')
elif request.method == 'POST':
name = request.POST.get('name')
author = request.POST.get('author')
book = models.Book.objects.create(name = name, author = author)
return redirect('/books')
def delete_book(request):
id = request.GET.get('id')
models.Book.objects.filter(id = id).delete()
return redirect('/books')
def view_book(request):
id = request.GET.get('id')
book = models.Book.objects.get(id = id)
context = { 'book': book }
return render(request, 'core/view-book.html', context)
def update_book(request):
if request.method == 'GET':
id = request.GET.get('id')
book = models.Book.objects.get(id = id)
context = { 'book': book }
return render(request, 'core/update-book.html', context)
elif request.method == 'POST':
id = request.POST.get('id')
name = request.POST.get('name')
author = request.POST.get('author')
models.Book.objects.filter(id = id).update(name = name, author = author)
return redirect('/books')
八、页面显示部分
(1)vi templates/core/books.html
{% if books %}
{% for book in books %}
{{ book.id }} {{ book.name }} {{ book.author }}
<a href="/view-book?id={{book.id}}">view</a>
<a href="/update-book?id={{book.id}}">update</a>
<a href="/delete-book?id={{book.id}}">delete</a>
</br>
{% endfor %}
{% endif %}
</br>
<a href="/create-book">add book</a>
(2)vi templates/core/create-book.html
<form action="/create-book" method="post">
{% csrf_token %}
name:<input name='name'></br>
author:<input name='author'>
<input type='submit' value='save'>
</form>
(3)vi demo/templates/core/view-book.html
<table>
<tr>
<td>id</td><td>{{book.id}}</td>
</tr>
<tr>
<td>name</td><td>{{book.name}}</td>
</tr>
<tr>
<td>author</td><td>{{book.author}}</td>
</tr>
</table>
(4)vi demo/templates/core/update-book.html
<form action='/update-book' method='post'>
<input type='hidden' name='id' value='{{book.id}}'/>
{% csrf_token %}
<table>
<tr>
<td>id</td><td>{{book.id}}</td>
</tr>
<tr>
<td>author</td><td><input name='author' value='{{book.author}}'/></td>
</tr>
<tr>
<td>name</td><td><input name='name' value='{{book.name}}'/></td>
</tr>
</table>
<input type='submit'/>
</form>
九、启动项目
python3 manage.py runserver 0.0.0.0:8080
十、停止服务
ctrl + c
项目目录结构
Demo
├── manage.py
├── db.sqlite3 #sqlite3数据库文件
└── demo
├── settings.py #配置文件
├── urls.py #总路由配置文件
├── core #core模块,自己创建的
│ ├── models.py #model文件
│ ├── views.py #控制层,数据处理,页面跳转
│ ├── helpers.py #帮助类
│ └── urls.py #core模块 路由配置文件
├── templates
│ └── core
│ ├── books.html
│ ├── create-book.html
│ ├── update-book.html
│ └── view-book.html
└──static #静态文件目录
├── css
├── js
└── image
- python web框架——扩展Django&tornado
一 Django自定义分页 目的:自定义分页功能,并把它写成模块(注意其中涉及到的python基础知识) models.py文件 # Create your models here. class Us ...
- python三大web框架Django,Flask,Flask,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架
Python几种主流框架 从GitHub中整理出的15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python We ...
- 浅谈Python Web 框架:Django, Twisted, Tornado, Flask, Cyclone 和 Pyramid
Django Django 是一个高级的 Python Web 框架,支持快速开发,简洁.实用的设计.如果你正在建一个和电子商务网站相似的应用,那你应该选择用 Django 框架.它能使你快速完成工作 ...
- Django,Flask,Tornado三大框架对比,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架
Django 与 Tornado 各自的优缺点Django优点: 大和全(重量级框架)自带orm,template,view 需要的功能也可以去找第三方的app注重高效开发全自动化的管理后台(只需要使 ...
- Python Web框架
本节对Python Web框架学习 一.MTVModel: 存放所有数据库相关文件Template:模板文件,存放html文件View: 业务处理,即函数文件 二.MVCmodel: 存放数据库相关文 ...
- Python Web 框架:Tornado
1.Tornado Tornado:python编写的web服务器兼web应用框架 1.1.Tornado的优势 轻量级web框架 异步非阻塞IO处理方式 出色的抗负载能力 优异的处理性能,不依赖多进 ...
- 一步一步理解 python web 框架,才不会从入门到放弃
要想清楚地理解 python web 框架,首先要清楚浏览器访问服务器的过程. 用户通过浏览器浏览网站的过程: 用户浏览器(socket客户端) 3. 客户端往服务端发消息 6. 客户端接收消息 7. ...
- 浅谈Python web框架
一.Python web框架 Web Framework,Ruby的世界Rails一统江湖,而Python则是一个百花齐放的世界,各种micro-framework.framework不可胜数,不完全 ...
- python web框架介绍对比
Django Python框架虽然说是百花齐放,但仍然有那么一家是最大的,它就是Django.要说Django是Python框架里最好的,有人同意也有人 坚决反对,但说Django的文档最完善.市场占 ...
- 自定义python web框架
-- Bootstrap http://www.bootcss.com/ -- Font Awesome http://fontawesome.io/ -- bxslider http://bxsli ...
随机推荐
- sublime里面几个个人觉得比较实用的快捷键
Alt+F3 选中文本按下快捷键,即可一次性选择全部的相同文本进行同时编辑.举个栗子:快速选中并更改所有相同的变量名.函数名等. Ctrl+L 选中整行,继续操作则继续选择下一行,效果和 Shift+ ...
- python--面向对象:类和对象命名空间
一.一个类可以定义两种属性:静态属性和动态属性 (一)对于不可变数据类型来说,类变量最好用类名操作,也可以用对象操作,但是只能查,不能改,对象改的都只是相当于在自己的命名空间里重新建立了一个 clas ...
- 函数隐藏参数 — this
解析器在调用函数每次都会向函数内部传递一个隐含的参数,这个隐含的参数就是this this指向的是一个对象,这个对象我们成为函数执行的上下文对象 根据函数的调用方式不用,this会指向不同的对象: 1 ...
- 前端mockjs模拟图片验证码
ps:mockjs在进行相同的双数次请求的时候,会出现请求404的状况,希望有大佬帮解决下 首先创建dom <img id='bbn' src="" alt="图图 ...
- shell脚本中:单引号和双引号的区别
单引号和双引号的区别 前面我们还留下一个疑问,定义变量时,变量的值可以由单引号' '包围,也可以由双引号" "包围,它们到底有什么区别呢?不妨以下面的代码为例来说明: #!/bin ...
- VS 2015 Download
企业版:http://download.microsoft.com/download/B/8/F/B8F1470D-2396-4E7A-83F5-AC09154EB925/vs2015.ent_chs ...
- thinkphp 模块部署
3.2对模块的访问是自动判断的,所以通常情况下无需配置模块列表即可访问,在部署模块的时候,默认情况下都是基于类似于子目录的URL方式来访问模块的,例如: http://serverName/Home/ ...
- hive的行列互转
行转列 多行转多列 数据表 row2col col1 col2 col3 a c 1 a d 2 a e 3 b c 4 b d 5 b e 6 现在要将其转化为: col1 c d e a 1 2 ...
- linux下mysql权限配置
先登入mysql mysql -u root -p 然后回车键入密码! 1.2 赋予主机B操作数据库的权限 mysql> grant usage on *.* to username@192.1 ...
- csp-s模拟测试93
csp-s模拟测试93 自闭场. $T1$想到$CDQ$,因为复杂度少看见一个$0$打了半年还用了$sort$直接废掉,$T2$,$T3$直接自闭暴力分都没有.考场太慌了,心态不好. 02:07:34 ...