Django基础

Django介绍:

Django简介:

为什么使用Django?

知识储备:

学习目标:


DJango初体验:

1.安装DJango:

sudo pip install -i https://pypi.doubanio.com/simple/ Django

使用国内镜像

创建Django项目

django-admin startproject demo

会在目录下产生一个manage.py管理脚本

python manage.py runserver 0.0.0.0:8080  #局域网内的机子可以访问本机ip的8080

mac访问虚拟机中的Ubuntu里建的website


2.Django工程目录:

_init_py:�声明了这个子目录上是一个python模块

2.1 Django的应用目录大致结构:

2.1.1 创建应用:

python manage.py startapp blog

2.1.2 添加应�用:

在settings.py 添加


2.1.3 应用目录详解:

_init_py:�声明了这个子目录上是一个python模块
views.py:声明了视图逻辑
models.py:声明了数据模型
admin.py:将数据模型注册到Django内置的管理模块中
tests.py:单元测试
migrations:用于数据迁移

旧版本代码:

新版本代码:

!(Django1.10需要修改的地方)[http://stackoverflow.com/questions/38394598/typeerror-view-must-be-a-callable-or-a-list-tuple-in-the-case-of-include]
!(Django 创建第一个项目)[http://www.runoob.com/django/django-first-app.html]

3.Django概述(重要概念)


Django开发-基础篇

DJango模板语法及使用:

什么是模板

模板是一个文本,用于分离文档和表现内容,通常用于生成HTML。

<html>
<head>template</head>
<body>
<p>Hello{{name}}</p>
<ul>
{% for item in itemlist %}
    <li>{{item}}</li>
{% endfor %}
</ul>
{% if status %}
    <p> I love python </p>
{% else %}
    <p> I love django </p>
{% endif %}
</body>

模板使用方法:

1.用原始的模板代码字符串创建一个Template对象
2.调用模板对象的render方法,并且传入一套变量context

python manage.py shell

from django import template
t = template.Template('hello,{{name}}')  #创建一个变量name
c = template.Context({'name':'django'})  #创建了一个context并传入一个name的值
print t.render(c)        #调用render方法来渲染

一旦你创建了一个template对象,你就可以用context处理器来传递数据给它,最用调用render()方法来渲染它

模板中过滤器:

过滤器就是将模板中的变量过滤一遍,在变量显示前修改它的一个方法。
如:下列代码中,upper就是一个过滤器:将name这个变量转化为全部为大写字母的格式。

{{name|upper}}

模板的加载 :

Django提供了一种使用方便且功能强大的API,用于解决模板加载调用过程的问题。

创建一个文件夹templates,并写入模板:

在settings.py写入

import os

TEMPLATES_DIRS =  os.path.join(os.path.dirname(__file__),'templates')
#可以根据路径查找模板

在manage.py shell 输入:

from django.template.loader import get_template
t =  get_template("2.html")
t

输出:

<django.template.backends.django.Template at 0x7f6e2da0d790> 
#说明模板使用成功

模型开发与数据库交互:

使用原生方法连接数据库:

from django.test import TestCase
import MySQLdb

db = MySQLdb.connect(user = 'root',password= 'root',db ='test')#连接数据库
cursor = db.cursor()  #创建一个游标
cursor.execute('select * from table')#使用sql语句
result = cursor.fetchall()  #获取返回的结果
cursor.close()
db.close()  #关闭数据库连接

配置settings.py文件:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',#选择数据库引擎
        #'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    'USER':'root',
    'PASSWORD':'root',
    'NAME':'test',
    'HOST':'localhost'
}

}

在模型中使用数据库:

修改models.py:

from django.db import models

class Mysite(models.Model):
    #定义一个title,字符串类型
    title = models.CharField(max_length=100) 
    url = models.URLField()
    author = models.CharField(max_length=100)
    #定义一个num,整形    
    num = models.IntegerField(max_length=10)

检查模型:

python manage.py check

将模型同步到数据库中:

python manage.py makemigrations
python manage.py migrate
同步成功

django1.10的很多操作跟现在出版的书里的命令都不一样了

安装python模块时出现:error: Setup script exited with error: command 'gcc' failed with exit status 1

mysql-python安装时EnvironmentError: mysql_config not found

“全能”选手—Django 1.10文档中文版Part1

Django新手图文教程

Django基本操作命令

模型开发与数据库交互--数据处理:

1.基本数据访问

from blog.models import *
m = Mysite.objects.all()
m
# Out[6]: <QuerySet []> #数据为空,输出空列表

2.插入和更新数据

m = Mysite(title='django',num=2)
m.save()
m = Mysite.objects.all() #查询所有
m
#Out[10]: <QuerySet [<Mysite: Mysite object>]>
m[0].title
#Out[11]: u'django'

3.数据过滤

m = Mysite.objects.get(num=2)
m
#Out[13]: <Mysite: Mysite object>
m.title
#Out[14]: u'django'

4.数据排序

#插入多条�数据
m = Mysite(title='django',num=3)
m.save()
m = Mysite(title='django',num=9)
m.save()
m = Mysite(title='django',num=1)
m.save()
#以num进行排序
m = Mysite.objects.all().order_by("num")
m[0].num
#Out[30]: 1L

5.更新多个对象,删除对象等

m = Mysite.objects.get(num=2)
m.title
#Out[32]: u'django'
m.title = 'python' #更新数据

m.delete() #获取对象后进行删除即可

Django 的后台管理及表单类介绍:

Django的自动管理界面:通过读取你模式中的元数据,提供一个强大而且可以使用的界面。

例子:
修改views.py,编写视图函数:

from blog.models import *
from blog.forms import *
from django.http import HttpResponse
from django.shortcuts import render_to_response

def hello(request):
    if request.method == 'POST':
        form = Mybook(request.POST)#将post的数据填到表单里面
        if form.is_valid():  #验证是否有效
            data = form.cleaned_data
            title = data['title']  #取其中title数据
    return HttpResponse(title)

    form = Mybook()##如果是get请求,则返回这个页面
    return render_to_response('1.html',{'form':form})

添加froms.py:

from django import forms

class Mybook(forms.Form):
    name = forms.CharField()
    author = forms.CharField()
    date = forms.CharField()

添加1.html:

<html>
<body>
    <form method='post'>
    {{form.as_p}}
    <input type = "submit" name = "ok">
    </from>
</body>
</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容