1. django安装: django解压后目录下有一个setup.py文件,在命令行运行python setup.py install,当前前提是已经安装了python才能执行命令,然后用下面命令检查django是否安装成功:

    import django
    print(django.get_version())
  2. 创建project: 在命令行进入一个想用来存放project code的目录,然后运行命令:

    #django-admin.py的路径如果不在环境变量中,则要打上全路径
    django-admin.py startproject mysite

    创建的project目录结构如下:

    mysite/ #工程根目录,可以重命名
    manage.py #命令行工具,用于与django project交互,是对django-admin.py的轻封装,每个django
    # projec都会自动创建它
    mysite/
    __init__.py #告诉Python mysite是一个package
    settings.py #配置django project
    urls.py #django project中的url
    wsgi.py #python web server gateway interface,python定义的web服务器与web服务程序或框架通信接口
  3. database setup: 打开settings.py文件,找到Databases变量,默认使用的是python自带的sqlite db

    DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.sqlite3',
    'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
    }

    如果使用的是其他数据库,则需要安装相应的数据库包,配置项也要指定一些额外的配置如USER,PASSWORD,HOST等,并且db要在数据库中创建好,如:

    DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.postgresql_psycopg2',
    'NAME': 'db name',
    'USER': 'mydatabaseuser',
    'PASSWORD': 'mypassword',
    'HOST': '127.0.0.1',
    'PORT': '',
    }
    }

    如果要使用manage.py自动为model创建表,django必须在数据库中有相应的权限

  4. settings.py中的TIME_ZONE用于设置时区,INSTALL_APPS表示当前project中激活的django app,哪些模块不需要刻意去掉,有部分模块需要使用数据库表,所以在使用它们前要先调用manage.py migrate命令创建必要的数据库表。INSTALL_APPS默认包括如下模块:

    • django.contrib.admin:the admin site

    • django.contrib.auth:an authentication system

    • django.contrib.contenttypes:a framework for content types

    • django.contrib.sessions:a session framework

    • django.contrib.messages:a messaging framework

    • django.contrib.staticfiles:a framework for managing static files

  5. Python自带了一个development web server,只能用于开发,不能用于生产环境,使用manage.py runserver [port | ip:port]命令启动.development web server每次请求都会重新调用Python code,所以改动python code不需要重启web server,但添加文件需要重启server

  6. project和app的关系:

    • app是一个weba application,实现了某项功能,如log system,poll app等

    • project是一个web站点的一系列配置和apps的集合

    • 一个project可以包含多个apps,一个app可以属于多个project

  7. 创建modules:在project的目录下执行如下命令:

    manage.py startapp polls

    会创建一个文件夹polls,也可以在python安装目录下的其他目录创建文件夹,结构如下:

    polls/
    __init__.py
    admin.py
    migrations/
    __init__.py
    models.py
    tests.py
    views.py

    创建使用database的web app,第一步就是创建model,在models.py文件里添加继承自models.Model的类,

    #polls/models.py
    
    class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published') class Choice(models.Model):
    question = models.ForeignKey(Question)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

    然后通过配置settings.py的INSTALLED_APPS对象把polls app插入到django.这样django知道包含了polls app

    INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'polls',
    )

    然后调用manage.py makemigrations polls命令告诉django更改了model(这种情况是添加了新model),要把改动存到migration,migration是存放model改动的磁盘文件,如polls/migrations/0001_initial.py,其内容是一个migration class.使用manage.py sqlmigrate polls 0001可以查看migration执行的sql 命令,只是查看命令并不执行命令。在数据库中创建model table需要执行manage.py migrate,该命令会对所有未执行migrate的migration执行migrate.django会在数据库中建一张django_migrations表跟踪哪些migrate了.总结更改model的三个步骤:

    • 在models.py中更改model

    • 运行manage.py makemigrations为更改创建migration

    • 运行manage.py migrate 数据库中应用更改

  8. 将models在数据库中创建后,可以在命令行里操作这些model.启动命令行要使用manage.py shell而不是用python命令,因为manage.py shell会设置环境变量DJANGO_SETTINGS_MODULE=mysite.settings.py.

    import os
    print(os.environ['DJANGO_SETTINGS_MODULE'])
    #mysite.settings

    之后可以在命令行里操作model,model的改动也可以通过save()函数保存到数据库中

Django(1.7 part1)的更多相关文章

  1. 实战Django:官方实例Part1

    [写在前面] 撰写这个实战系列的Django文章,是很久之前就有的想法,问题是手头实例太少,一旦开讲,恐有"无米下锅"之忧. 随着对Django学习的深入,渐渐有了些心得,把这些心 ...

  2. django入门-初窥门径-part1

    尊重作者的劳动,转载请注明作者及原文地址 http://www.cnblogs.com/txwsqk/p/6510917.html 完全翻译自官方文档 https://docs.djangoproje ...

  3. django with mysql (part-1)

    step01: django-admin.py startproject dj01 step02: cd dj01 tree step03: python manage.py runserver Th ...

  4. 实战Django:简易博客Part1

    舍得学习新技能的时候,通常不喜欢傻读书--捧着一本阐述该项技能的书籍,然后傻看,一路看下来,脑子里塞满了新的概念.知识点,头是越来越大,但技能却几乎没掌握半分. 多年来,舍得养成了用做实例来学习新技能 ...

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

    本文是博主翻译的Django1.10版本官方文档的第一部分,如时间充裕,争取一直翻译下去,经验不足,或有错漏,敬请指正. 另外对于公开文档进行翻译的版权问题不是很清楚,如有侵权请联系我! 另外,要转载 ...

  6. Django 1.10中文文档—第一个Django应用Part1

    在本教程中,我们将引导您完成一个投票应用程序的创建,它包含下面两部分: 一个可以进行投票和查看结果的公开站点: 一个可以进行增删改查的后台admin管理界面: 我们假设你已经安装了Django.您可以 ...

  7. day 61 Django part-1 django的安装,以及初学者三件套(以及settings中的mysql配置)

    我们的django到底是什么东西呢? 我们的代码都是在后台写的,包括我们的pycharm都是属于后台的工具,但是我们的后端开发说到底是需要开发完了之后拿到用户面前的,让我们的用户看到我们的东西,首先要 ...

  8. Django 1.10文档中文版Part1

    目录 第一章.Django1.10文档组成结构1.1 获取帮助1.2 文档的组织形式1.3 第一步1.4 模型层1.5 视图层1.6 模板层1.7 表单1.8 开发流程1.9 admin站点1.10 ...

  9. Django——如何在Django模板中注入全局变量?——part1

    问题:TEMPLATE_CONTEXT_PROCESSORS代表着什么? 问题描述:无法在项目的settings.py文件中找到TEMPLATE_CONTEXT_PROCESSORS. ——————— ...

随机推荐

  1. 35.QT蝴蝶飞舞

    fly.h #ifndef FLY_H #define FLY_H #include <QObject> #include <QPainter> #include <QG ...

  2. 使用log4net记录日志到数据库(含自定义属性)

    日志输出自定义属性! 特来总结一下: 一.配置文件 使用log4写入数据库就不多说了,网上方法很多,自定义字段如下 <commandText value="INSERT INTO db ...

  3. Redis学习笔记(九) 命令进阶:Pub/Sub(发布/订阅)操作

    原文链接:http://doc.redisfans.com/pub_sub/index.html Redis的Pub/Sub模型可以应对工作中的一些简单应用,涉及到复杂应用还是推荐使用诸如Rabbit ...

  4. POJ 2353 DP

    双向DP+记录路径. // by SiriusRen #include <stack> #include <cstdio> #include <cstring> u ...

  5. C# 正则表达式

    C# 正则表达式 正则表达式 是一种匹配输入文本的模式..Net 框架提供了允许这种匹配的正则表达式引擎.模式由一个或多个字符.运算符和结构组成. 定义正则表达式 下面列出了用于定义正则表达式的各种类 ...

  6. 微信小程序 input使用letter-spacing失效问题

    根据ui设计稿, 本来思路是一个input搞定,下面的线使用背景图 background:url('/images/line.png')no-repeat bottom center; 然后使用let ...

  7. 子线程创建AlertDialog错误

    Can't create handler inside thread that has not called Looper.prepare()

  8. Stack Overflow大揭密:哪一种程序员工资最高?

    Stackoverflow在程序员之间可以說是无人不知无人不晓,甚至常有人开玩笑说:“如果stackoverflow倒闭了,全世界代码的产出率将下降一半以上”或许听起来有点夸张,但是不难想像这个网站在 ...

  9. Block formatting context & Inline formatting context(BFC&IFC)的区别(转载)

    何为BFC与IFC bfc与ifc是针对页面正常流的两种环境,块级元素处于bfc环境中,行内元素处于ifc环境中. 元素是块级元素or行内元素由其display属性决定: block, table, ...

  10. JS iframe给父类传值

    父类页面 <html><head> <script type="text/javascript">            function Ge ...