Django环境配置

Django安装 html

#安装最新版本的Django
$ pip install  django 
#或者指定安装版本
pip install -v django==1.7.1
  • 项目建立
    $ django-admin startproject my_blog
  • 创建Django app
    $ python manage.py startapp article
  • 运行程序
    $ python manage.py runserver

pip安装python模块权限报错解决
windows下pip安装python模块时报错总结 - 温柔易淡 - 博客园 java

pycharm运行django程序
配置: runserver 0.0.0.0:8000
参考:pycharm上运行django服务器端、以及建立app方法 python

diango使用mysql数据库

设置数据库
Django项目建成后, 默认设置了使用SQLite数据库, 在my_blog/my_blog/setting.py中能够查看和修改数据库设置: mysql

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'csvt',
        'USER': 'root',
        'PASSWORD': 'root',
        'HOST': '',
        'PORT': '',

    }
}

同时要在init.py中写如下代码 sql

import pymysql
pymysql.install_as_MySQLdb()

pymysql的安装 shell

pip install PyMySQL

建立models
在my_blog/article/models.py下编写以下程序:数据库

from django.db import models

# Create your models here.
class Article(models.Model) :
    title = models.CharField(max_length = 100)  #博客题目
    category = models.CharField(max_length = 50, blank = True)  #博客标签
    date_time = models.DateTimeField(auto_now_add = True)  #博客日期
    content = models.TextField(blank = True, null = True)  #博客文章正文

    #python2使用__unicode__, python3使用__str__
    def __str__(self) :
        return self.title

    class Meta:  #按时间降低排序
        ordering = ['-date_time']

其中str(self) 函数Article对象要怎么表示本身, 通常系统默认使用 来表示对象, 经过这个函数能够告诉系统使用title字段来表示这个对象django

  • CharField 用于存储字符串, max_length设置最大长度
  • TextField 用于存储大量文本
  • DateTimeField 用于存储时间, auto_now_add设置True表示自动设置对象增长时间

同步数据库 windows

$ python manage.py makemigrations
$ python manage.py migrate

Django Shell
如今咱们进入Django中的交互式shell来进行数据库的增删改查等操做ruby

$ python manage.py shell
Python 3.4.2 (v3.4.2:ab2c023a9432, Oct  5 2014, 20:42:22)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>
这里进入Django的shell和python内置的shell是很是相似的
>>> from article.models import Article
>>> #create数据库增长操做
>>> Article.objects.create(title = 'Hello World', category = 'Python', content = '咱们来作一个简单的数据库增长操做')
<Article: Article object>
>>> Article.objects.create(title = 'Django Blog学习', category = 'Python', content = 'Django简单博客教程')
<Article: Article object>

>>> #all和get的数据库查看操做
>>> Article.objects.all()  #查看所有对象, 返回一个列表, 无对象返回空list
[<Article: Article object>, <Article: Article object>]
>>> Article.objects.get(id = 1)  #返回符合条件的对象
<Article: Article object>

>>> #update数据库修改操做
>>> first = Article.objects.get(id = 1)  #获取id = 1的对象
>>> first.title
'Hello World'
>>> first.date_time
datetime.datetime(2014, 12, 26, 13, 56, 48, 727425, tzinfo=<UTC>)
>>> first.content
'咱们来作一个简单的数据库增长操做'
>>> first.category
'Python'
>>> first.content = 'Hello World, How are you'
>>> first.content  #再次查看是否修改为功, 修改操做就是点语法
'Hello World, How are you'

>>> #delete数据库删除操做
>>> first.delete()
>>> Article.objects.all()  #此时能够看到只有一个对象了, 另外一个对象已经被成功删除
[<Article: Article object>]  

Blog.objects.all()  # 选择所有对象
Blog.objects.filter(caption='blogname')  # 使用 filter() 按博客题目过滤
Blog.objects.filter(caption='blogname', id="1") # 也能够多个条件
#上面是精确匹配 也能够包含性查询
Blog.objects.filter(caption__contains='blogname')

Blog.objects.get(caption='blogname') # 获取单个对象 若是查询没有返回结果也会抛出异常

#数据排序
Blog.objects.order_by("caption")
Blog.objects.order_by("-caption")  # 倒序

#若是须要以多个字段为标准进行排序(第二个字段会在第一个字段的值相同的状况下被使用到),使用多个参数就能够了
Blog.objects.order_by("caption", "id")

#连锁查询
Blog.objects.filter(caption__contains='blogname').order_by("-id")

#限制返回的数据
Blog.objects.filter(caption__contains='blogname')[0]
Blog.objects.filter(caption__contains='blogname')[0:3]  # 能够进行相似于列表的操做
相关文章
相关标签/搜索