1、Python 下载地址:https://www.python.org/downloads/
2、Django 下载地址:https://www.djangoproject.com/download/
 
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> &nbsp;
    <a href="/update-book?id={{book.id}}">update</a> &nbsp;
    <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

django笔记(python web框架)的更多相关文章

  1. python web框架——扩展Django&tornado

    一 Django自定义分页 目的:自定义分页功能,并把它写成模块(注意其中涉及到的python基础知识) models.py文件 # Create your models here. class Us ...

  2. python三大web框架Django,Flask,Flask,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架

    Python几种主流框架 从GitHub中整理出的15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python We ...

  3. 浅谈Python Web 框架:Django, Twisted, Tornado, Flask, Cyclone 和 Pyramid

    Django Django 是一个高级的 Python Web 框架,支持快速开发,简洁.实用的设计.如果你正在建一个和电子商务网站相似的应用,那你应该选择用 Django 框架.它能使你快速完成工作 ...

  4. Django,Flask,Tornado三大框架对比,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架

    Django 与 Tornado 各自的优缺点Django优点: 大和全(重量级框架)自带orm,template,view 需要的功能也可以去找第三方的app注重高效开发全自动化的管理后台(只需要使 ...

  5. Python Web框架

    本节对Python Web框架学习 一.MTVModel: 存放所有数据库相关文件Template:模板文件,存放html文件View: 业务处理,即函数文件 二.MVCmodel: 存放数据库相关文 ...

  6. Python Web 框架:Tornado

    1.Tornado Tornado:python编写的web服务器兼web应用框架 1.1.Tornado的优势 轻量级web框架 异步非阻塞IO处理方式 出色的抗负载能力 优异的处理性能,不依赖多进 ...

  7. 一步一步理解 python web 框架,才不会从入门到放弃

    要想清楚地理解 python web 框架,首先要清楚浏览器访问服务器的过程. 用户通过浏览器浏览网站的过程: 用户浏览器(socket客户端) 3. 客户端往服务端发消息 6. 客户端接收消息 7. ...

  8. 浅谈Python web框架

    一.Python web框架 Web Framework,Ruby的世界Rails一统江湖,而Python则是一个百花齐放的世界,各种micro-framework.framework不可胜数,不完全 ...

  9. python web框架介绍对比

    Django Python框架虽然说是百花齐放,但仍然有那么一家是最大的,它就是Django.要说Django是Python框架里最好的,有人同意也有人 坚决反对,但说Django的文档最完善.市场占 ...

  10. 自定义python web框架

    -- Bootstrap http://www.bootcss.com/ -- Font Awesome http://fontawesome.io/ -- bxslider http://bxsli ...

随机推荐

  1. MySQL 小调研

    一. 概况: MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL ...

  2. SpringMVC和spring常见面试题总结

    1.什么是Spring MVC ?简单介绍下你对springMVC的理解? Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,C ...

  3. 深度学习攻防对抗(JCAI-19 阿里巴巴人工智能对抗算法竞赛)

    最近在参加IJCAI-19阿里巴巴人工智能对抗算法竞赛(点击了解),初赛刚刚结束,防御第23名,目标攻击和无目标攻击出了点小问题,成绩不太好都是50多名,由于找不到队友,只好一个人跟一群大佬PK,双拳 ...

  4. dev 中 字符串转中文拼音缩写,对grid列表进行模糊匹配,grid获取焦点行,gridlookupedit控件用拼音模糊匹配下拉选项

    番外篇:. //该方法是将字符串转化为中文拼音的首写字母大写, public static string RemoveSpecialCharacters(string str){try{if (str ...

  5. thinkphp模块设计

    3.2发布版本自带了一个应用目录结构,并且带了一个默认的应用入口文件,方便部署和测试,默认的应用目录是Application(实际部署过程中可以随意设置). 通常情况下3.2无需使用多应用模式,因为大 ...

  6. 59 cuda 不同版本__half冲突问题 —— "__half" has no member "x"

    0 引言 深度学习中常常用到half类型的半精度浮点数,但是cpu本身是不支持half的,因此需要进行转换. 1 half - float转换 参考了某博主的github,链接如下. https:// ...

  7. Delphi获取句柄

    Delphi获取句柄发布时间:2011-06-16转载文章请标明出处: http://code.01yun.com/asp0dm/asp0net0dm/20110616/55395.html查找另外一 ...

  8. NOIp2018集训test-9-1(am)

    1.最大值 可以用FWT水过去,李巨写了FWT结果中途爆int了炸了几十分好像. 我乱搞了一下把除了大数据有or的搞出来然后90,还是蛮划算的.我yy的做法: 1.xor 字典树上贪心, 一开始我打了 ...

  9. ArcGIS中QueryTask,FindTask,IndentifyTask 之间的区别

    1:QueryTask是一个进行空间和属性查询的功能类,它可以在某个地图服务的某个子图层内进行查询,顺便需要提一下的是,QueryTask进行查询的地图服务并 不必项加载到Map中进行显示.Query ...

  10. MySql 5.6重新安装后忘记密码的解决办法

    1.先使用管理员权限的cmd停止MySQL服务:net stop mysql 2.重新打开一个cmd窗口进入安装目录的bin路径后输入mysqld --skip-grant-tables,注意这个cm ...