学习菜鸟教程的Django教程,链接如下:

安装:

pip install Django

如果pip < 1.4,使用:

pip install https://www.djangoproject.com/download/1.11a1/tarball/

或者clone代码:

git clone https://github.com/django/django.git

创建一个项目:

django-admin.py startproject HelloWorld

创建项目中的一个app:

django-admin.py startapp TestModel

启动服务器方法:

python manager.py runserver 0.0.0.0:8000

访问方法:  浏览器输入

localhost:8000/

django采用mvc结构,在工程根目录下创建templates目录,并且修改主工程下的settings.py(参见# 修改位置部分):

...TEMPLATES = [

{

'BACKEND': 'django.template.backends.django.DjangoTemplates',

'DIRS': [BASE_DIR+"/templates",],       #修改位置

'APP_DIRS': True,

'OPTIONS': {

'context_processors': [

'django.template.context_processors.debug',

'django.template.context_processors.request',

'django.contrib.auth.context_processors.auth',

'django.contrib.messages.context_processors.messages',

],

},

},

]

...

这样,可以在templates中放置html文件,由render渲染出来。

映射规则:

修改主工程下的urls.py文件,这里把浏览器访问的路径映射到特定的类来处理,如:

urlpatterns = [

url(r'^hello$', view.hello),

]

这里的view是py文件,hello是其中的函数,用于处理对*.*.*.*:8000/hello格式的响应,它的主要功能是,将模板文件渲染出来,作为响应值,如:

from django.shortcuts import render

def hello(request):

context          = {}

context['hello'] = 'Hello World!'

return render(request, 'hello.html', context)

其中hello.html是放置在templates中的文件,context中的内容是作为变量传递给hello.html的。

在模板文件中,是可以使用变量以及控制逻辑的。

使用变量方式,是 {{ xxx }},比如上面传递的参数会在hello.html中这样使用:{{ hello}}

控制逻辑的格式是

{% if xxx % }  xxx  {% endif %}

或者

{% for %} xxx  {% endfor%}

注释的格式是

{# xxx #}

还可以继承:

在base.html中设定继承部分

{% block name %} xxx {% endblock %}

然后再子类中sub.html声明:

{% extends "base.html" %}

然后修改继承的段

{% block name %} xxx {%endblock %}

还可以包含:

{% include"xxx.html" %}

上面的hello处理,可以区分是GET处理还是POST处理:

if request.method == 'GET':

do_something()

elif request.method == 'POST':

do_something_else()

可以通过参数字典直接获取传参,比如:

request.POST['q']

这里的'q'就是参数,通过它作为索引值获取到对应的参数。

比如表单提交的处理如下:

# 接收POST请求数据

def search_post(request):

ctx ={}

if request.POST:

ctx['rlt'] = request.POST['q']

return render(request, "post.html", ctx)

在响应函数的过程中,还可以跟数据库进行交互。

首先配置数据库: (也可以配置成mysql)

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.sqlite3',

'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),

'USER': 'Jacob',

'PASSWORD': '123456',

'HOST': 'localhost',

'PORT': '3306',

}

}

创建用于数据库的app,同时将app名字加入到settings.py的INSTALLED_APPS项中。

然后就可以定义表了,比如:

# models.py

from django.db import models

class Test(models.Model):

name = models.CharField(max_length=20)

然后让数据库把这个表创建起来: (下面的命令不要少一个)

python manage.py migrate   #创建表结构

python manage.py makemigrationsTestModel  #让 Django 知道我们在我们的模型有一些变更

python manage.py migrate TestModel   #创建表结构

操作数据库内容,就可以通过上面的类来使用,比如生成一个条目:

test = Test(name='vvv')

test.save()

删除一个条目:

Test.objects.filter(id=1).delete()

更新一个条目:

Test.objects.filter(id=1).update(name='Google')

全更新:

Test.objects.all().update(name='all')

写好了数据库操作的代码后,记得在数据库app的目录下,修改admin.py文件:

from django.contrib import admin

from TestModel.models import Test

# Register your models here.

admin.site.register(Test)

这里的admin,其实是django提供的一个管理页面,可以很方便的把数据库信息展示出来。

再详细介绍下admin。

首先激活这个管理工具: 修改映射规则文件urls.py,在urlpatterns中添加条目:

url(r'^admin/', admin.site.urls),

创建一个超级用户:

python manage.py createsuperuser

这样,可以在浏览器中通过localhost:8000/admin/进行访问了。

可以在页面中,看到之前创建的相关数据库,并且操纵它们的内容。

同时,还可以自定义数据库展示的表单方式,比如定义一个Contact数据库:

class Contact(models.Model):

name   = models.CharField(max_length=200)

age    =models.IntegerField(default=0)

email  = models.EmailField()

def __unicode__(self):

return self.name

在admin.py中注册的时候,这样自定义表单:

# Register your models here.

class ContactAdmin(admin.ModelAdmin):

fields = ('name', 'email')

admin.site.register(Contact, ContactAdmin)

还可以做列表样式,内联其它数据表,增加搜索栏等,示例如下:

# Register your models here.

class TagInline(admin.TabularInline):

model = Tag

class ContactAdmin(admin.ModelAdmin):

list_display = ('name','age', 'email') # list

search_fields = ('name',)

inlines = [TagInline]  # Inline

fieldsets = (

['Main',{

'fields':('name','email'),

}],

['Advance',{

'classes': ('collapse',),

'fields': ('age',),

}]

)

admin.site.register(Contact, ContactAdmin)

完整代码工程参见:

python turtle菜鸟教程_【读书】Django教程(菜鸟教程)相关推荐

  1. 实例教程_次世代兽人制作教程

    实例教程_次世代兽人制作教程 链接:https://pan.baidu.com/s/1sr6VvFHKyfpg1ZlW0ui8PQ 密码:cj85

  2. python独立网站教程_python做网站教程_如何免费做网站的教程

    python学习指南教程 180x270 - 7KB - JPEG 图灵程序设计丛书:Python基础教程 260x317 - 12KB - JPEG 跳一跳python使用教程 微信跳一跳pytho ...

  3. java微信公众号开发教程_微信公众平台开发教程(java版本含代码) 中文PDF版 3.13MB...

    本文档将对即将推出的微信公众帐号开发系列连载教程做简单的说明. 教程主要是面向有一定 Java 编程基础的朋友, 目录: 微信公众帐号开发教程第 1 篇-引言  2 微信公众帐号开发教程第 2 篇-微 ...

  4. javplayer 使用教程_药物设计软件Sybyl教程(五):绘制分子对接后对接表面

    教程内容: 以SYBYL-X 2.0软件为例,进行分子对接(Surflex-Dock)后创建对接空腔的对接表面教程. 1 视频教程 建议在wifi环境下观看~ 2 图文教程 1.打开对接结果 本期教程 ...

  5. javplayer 使用教程_药物设计软件Sybyl教程(一):基于Tripos力场对小分子配体进行结构优化...

    文 / 利刃君微信ID/ ziyuanliren666全文共1104字,推荐阅读时间6分钟. 教程内容: 以SYBYL-X 2.0软件为例,对小分子配体进行基于Tripos力场的能量最小化计算,优化分 ...

  6. python网页爬虫菜鸟教程_【爬虫】菜鸟教程,支持翻页,存储

    1.项目简介 豆瓣相信很多人都爬过,我也把我的方法拿出来交流学习,我也是菜鸟过来的,不会省略代码,此教程纯属娱乐,大神勿喷. 2.工具 requests re pygal mysql Anacond2 ...

  7. appium的python教程_移动App Appium自动化测试教程Appium+Python 【2018年新】_IT教程网...

    资源名称:移动App Appium自动化测试教程Appium+Python [2018年新] 资源目录: 第一章:App自动化测试概述 1-1 Appium自动化课程简介 1-2 课程大纲 1-3 移 ...

  8. python建立复数数组_深入理解NumPy简明教程---数组1

    目前我的工作是将NumPy引入到Pyston中(一款Dropbox实现的Python编译器/解释器).在工作过程中,我深入接触了NumPy源码,了解其实现并提交了PR修复NumPy的bug.在与Num ...

  9. python跳舞的线_【跳舞的线/教程】10分钟做一个可玩的饭制关卡

    未经作者授权,禁止转载 相关游戏: 跳舞的线.Dancing Line.Unity 简介补充: 七月以后因为某些原因,我可能就不会再做饭制了--(之前挖的坑以后有可能会填,但是肯定有生之年了).最后打 ...

  10. python京东预约抢购_京东抢购脚本js教程

    代码 #!/usr/bin/env python# -*- coding:utf-8 -*-from selenium import webdriverimport datetimeimport ti ...

最新文章

  1. jQuery简单实现遍历的方法
  2. rhel7安装oracle11g 的配置和安装过程
  3. LeetCode 92 ——反转链表 II
  4. OpenCV在图像中添加文字,画点,画直线
  5. Spring Cloud异常
  6. 如何通过Git GUI将自己本地的项目上传至Github
  7. 仿qq邮箱源码程序_小伙子利用C++实现邮件程序发送和接收
  8. tkmybatis 子查询_你的名字是爆款吗?一键查询!看看在杭州、全国多少人和你同名!...
  9. UI设计师——你是什么设计师?
  10. 易邮服务器com组件注册失败,com组件注册失败有什么办法可以解决
  11. Python全栈工程实践
  12. 2021-11-1-无法在此设备上激活WINDOWS因为无法连接到你的组织的激活服务器
  13. 网站实现QQ登陆功能
  14. 并行程序设计导论 概念总结
  15. OSPF高等特性——Forwarding Address
  16. Linux服务器程序规范化
  17. Swift 编程语言教程(官方文档)
  18. Android平台App进程优先级
  19. 天道酬勤系列之Java 实例 - 方法重载
  20. 浙大160位学者入选2020“中国高被引学者” 榜单!

热门文章

  1. krohne流量计接线图_电磁流量计接线方式
  2. pwm控制直流电机转速流程图_PWM控制直流电机调速
  3. **带I2C的LCD1602液晶显示51单片机程序**
  4. java导出pdf格式_Java导出Pdf格式表单
  5. 微信公众号+商户平台参数配置
  6. Android Launcher研究与开发——桌面的初步定制化
  7. VMware虚拟机安装与使用
  8. 单片机控制12864显示多行汉字(含PROTEUS仿真文件、程序和字模提取软件)
  9. 中国GBA模拟器先驱李可文不幸去世
  10. linux如何查看内存?