学习菜鸟教程的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 菜鸟教程 xml-【读书】Django教程(菜鸟教程)相关推荐

  1. android 改python,如何正确的用python修改AndroidManifest.xml(史上最详细教程)

    写在前面的话 AndroidManifest.xml这个文件如果你搞过android相关的东西(如果没搞过,我希望你去搞一下), 你一定很熟悉. 我们在工作可能会有一些动态修改或者获取manifest ...

  2. 保姆的式教程手把手教你,菜鸟玩转博客搭建!

    大家好,我是菜鸟哥! 今天教大家一个非常有意思的干货!大家有没有想自己动手搭建一个博客,无论是给别人秀肌肉,搭建一个向全世界展示自己的舞台:还是准备找工作做个自己的简历博客(有自己独立网站一定会给面试 ...

  3. ubuntu linux 教程 pdf,Ubuntu 12.04 菜鸟完全使用教程(四) PDF

    Linux公社已经在先前发布Suruibin 同学制作的 Ubuntu 12.04 菜鸟使用手册一到三系列教程,看来 Suruibin 同学是要将这套教程进行到底了!Ubuntu 12.04 菜鸟使用 ...

  4. 《简明Python教程》读书笔记

    <简明Python教程>读书笔记 开篇: 有两种方式构建软件设计:一种是把软件做得很简单以至于明显找不到缺陷,另一种是把它做得很复杂以至于找不到明显的缺陷. --C. AR. Hoare ...

  5. Python Django 电子商务网站教程

    Python Django 电子商务网站教程 使用高级自定义功能.RDS Postgres 构建 Python Django 电子商务网站并将其部署在 Amazon AWS 上 此视频教程共20.0小 ...

  6. python Django 安装详细教程(conda 与cmd)

    方式一:anaconda(界面安装) 运行anaconda navigator ,点击Environments–>下拉菜单选择 all ---->搜索框输入 django ,最后点 app ...

  7. 整理Python lxml读写xml文件详细教程

    Python lxml读写xml文件详细教程 xml文档解析 创建xml文档节点 更新xml文档节点 xml文档解析 下面展示详细解析过程. <?xml version='1.0' encodi ...

  8. python idle运行anaconda_在Python IDLE 下调用anaconda中的库教程

    大家都知道,Anaconda是一个开源的Python发行版本,其包含了conda.Python等180多个科学包及其依赖项.下载了anaconda我们可以很方便的随时调用这里面的库. 原先我自己在Py ...

  9. python的pygame库使用方法_python基础教程使用Python第三方库pygame写个贪吃蛇小游戏...

    今天看到几个关于pygame模块的博客和视频,感觉非常有趣,这里照猫画虎写了一个贪吃蛇小游戏,目前还有待完善,但是基本游戏功能已经实现,下面是代码: # 导入模块 import pygame impo ...

  10. 【转】python开发大全、系列文章、精品教程

    版权声明:本文为博主原创文章,转载请注明来源.开发合作联系luanpenguestc@sina.com https://blog.csdn.net/luanpeng825485697/article/ ...

最新文章

  1. 35 岁前程序员要规划好的四件事(转载)
  2. 11g 64位部分安装过程
  3. find之exec和args
  4. .NET 6新特性试用 | 异步流
  5. LetCode-MSSQL超过5名学生的课
  6. 基础篇5-python基本数据类型讲解1.1
  7. 程序员编程艺术:第五章、寻找满足和为定值的两个或多个数
  8. python爬app视频_python爬取抖音APP视频教程
  9. [转]NS2上实现一个简单的路由协议
  10. VMware基础架构和运营管理
  11. 350.两个数组的交集II
  12. yum 源端软件包扩展
  13. asp.net网上零食销售商城系统
  14. codesmith 连接mysql_CodeSmith连接Mysql方法步骤
  15. 007 JVM堆内存划分
  16. QQ、UC手机浏览器访问电脑版网页
  17. HDMI ARC功能详解及应用介绍
  18. ubuntu安装mysql安装包_ubuntu安装mysql
  19. C语言简单编程题——9*9乘法表
  20. 偷偷爆料下 955 不加班公司名单(2023 年最新版!)

热门文章

  1. 基于iTextSharp(C#)创建PDF文件
  2. linux展示文件最尾部内容 最新,LINUX tailf命令-显示文件的末尾若干行内容
  3. poedit使用(本地化和国际化)
  4. 基于Vue2和jsmind.js实现思维导图
  5. 凯恩帝数控系统面板介绍_凯恩帝数控车床操作面板按钮详解!
  6. USB充电限流芯片,5V输入,输出5V,6V触发关闭
  7. ABB全新机器人伺服驱动3HAB8101-1DSQC345A 3E031704 3E031712 3E031785 3E032016 3E032176 3E032455 3E034013
  8. spring 的bean 作用域
  9. 老司机必备的手机浏览器,比UC浏览器还好用
  10. MATLAB app designer中全局变量的使用