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. 枚举所有排列-STL中的next_permutation

    枚举排列的常见方法有两种 一种是递归枚举 另一种是STL中的next_permutation //枚举所有排列的另一种方法就是从字典序最小排列开始,不停的调用"求下一个排列"的过程 ...

  2. C#操作sql时注意点

    ①创建必要的索引 ②使用预编译查询 ③使用参数化sql会执行预编译,第一次执行的时候DBMS会为这个SQL语句进行查询优化并执行预编译 ④调整where子句中的连接顺序 ⑤DBMS一般次用自上而下的顺 ...

  3. js闭包概念

    含义:闭包是一个概念,它描述了函数执行完毕内存释放后,依然内存驻留的一个现象,只要把握这个核心概念,闭包就不难理解了 function a(){      var i=0;      function ...

  4. js从数组中取出n个不重复的数据

    /** * 首先,针对这个数组做一个去重处理,避免你在后面取数据的时候,因为取到相同的元素而又要多去取一次随机数 * 将获取到的不重复的数组,再到这里样本里面去取随机数 * 每取到一次,就将这个元素从 ...

  5. javascript动画函数封装

    function animate(obj, target) { clearInterval(obj.timer); obj.timer = setInterval(function () { var ...

  6. jsp指令和学习笔记集锦

    Jsp包含三个编译指令和七个动作指令.三个编译指令为:page.include.taglib. 七个动作指令为:jsp:forward.jsp:param.jsp:include.jsp:plugin ...

  7. JDBC程序实例

    实例 ( Statement ): public class JDBC { public static void main(String[] args) throws Exception { Conn ...

  8. luoguP4238 【模板】多项式求逆 NTT

    Code: #include <bits/stdc++.h> #define N 1000010 #define mod 998244353 #define setIO(s) freope ...

  9. iOS开发——自动填充短信验证码

    苹果在iOS 12,改进了一个很人性化的小细节.在做短信验证码功能的时候,自动获取短信中的验证码,然后点击填充即可.不用再向之前那样麻烦,自己看到弹出的短信信息后,死记硬背,再一个个敲上去,害怕背错了 ...

  10. laravel 授权、用户验证

    记录帖 一.授权 只允许管理员删除用户,给管理员授权时,可以这样做,首先: 创建UserPolicy类: php artisan make:policy UserPolicy  然后在UserPoli ...