跟我一起Django - 01 安装和初始化

python环境

C:\Python27\Lib\site-packages>python --version
Python 2.7.5

安装setuptools

下载脚本:https://bootstrap.pypa.io/ez_setup.py

python ez_setup.py

django环境

下载:https://www.djangoproject.com/download/1.7/tarball/

解压缩后进入目录:

python setup.py install
... ...
... ...

测试下:

E:\>python
Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import django;
>>> print django.get_version();
1.7
>>>

构建一个blog

python C:\Python27\Lib\site-packages\Django-1.7-py2.7.egg\django\bin\django-admin.py startproject mysite
ganiks.liu@MAMIS-GAIKS-LIU /E/mysite
$ ls -l
total 1
-rwxr-xr-x 1 ganiks.l Administ 249 Sep 11 13:42 manage.py
drwxr-xr-x 1 ganiks.l Administ 0 Sep 11 14:13 mysite ganiks.liu@MAMIS-GAIKS-LIU /E/mysite
$ ls -l mysite/
total 2
-rw-r--r-- 1 ganiks.l Administ 0 Sep 11 13:42 __init__.py
-rw-r--r-- 1 ganiks.l Administ 2042 Sep 11 13:42 settings.py
-rw-r--r-- 1 ganiks.l Administ 275 Sep 11 13:42 urls.py
-rw-r--r-- 1 ganiks.l Administ 387 Sep 11 13:42 wsgi.py

运行开发服务器

ganiks.liu@MAMIS-GAIKS-LIU /E/mysite
$ ./manage.py runserver
Performing system checks... System check identified no issues (0 silenced).
September 11, 2014 - 14:22:59
Django version 1.7, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
[11/Sep/2014 14:23:03] "GET / HTTP/1.1" 200 1759

创建blog app

ganiks.liu@MAMIS-GAIKS-LIU /E/mysite/mysite
$ ../manage.py startapp blog ganiks.liu@MAMIS-GAIKS-LIU /E/mysite/mysite
$ gvim settings.py ganiks.liu@MAMIS-GAIKS-LIU /E/mysite
$ ls -l
total 19
-rw-r--r-- 1 ganiks.l Administ 36864 Sep 11 15:04 db.sqlite3
-rwxr-xr-x 1 ganiks.l Administ 249 Sep 11 13:42 manage.py
-rw-r--r-- 1 ganiks.l Administ 312 Sep 11 14:42 models.py
drwxr-xr-x 1 ganiks.l Administ 0 Sep 11 15:04 mysite

注意,这里是在mysite/mysite目录下执行的创建app操作,所以blog是mysite.blog

编辑mysite/settings.py, 添加mysite.blog

# Application definition

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

Django 采用 INSTALL_APPS 来决定系统不同部分的配置,包括自动化的admin应用以及测试框架

创建你的Model

from django.db import models

# Create your models here.
#django.db.models.Model is the core partof the ORM system of Django
class BlogPost(models.Model):
# Django will add an auto-increment, unique id
title = models.CharField(max_length=150)
body = models.TextField()
timestamp = models.DataTimeField()

设置数据库

使用SQLite

SQLite非常适合做测试,甚至可以部署在没有大量并发写入的情况下。因为SQLite使用本地文件系统作为存储介质并且用原生的文件系统权限来做访问限制。
像主机、端口、用户和密码这些统统不需要了。

创建表

ganiks.liu@MAMIS-GAIKS-LIU /E/mysite
$ ./manage.py syncdb
Operations to perform:
Apply all migrations: admin, contenttypes, auth, sessions
Running migrations:
No migrations to apply.
Your models have changes that are not yet reflected in a migration, and so won't be applied.
Run 'manage.py makemigrations' to make new migrations, and then re-run 'manage.py migrate' to apply them. You have installed Django's auth system, and don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'ganiks.liu'): ganiks
Email address: ganiks@qq.com
Password:
Password (again):
Superuser created successfully. ganiks.liu@MAMIS-GAIKS-LIU /E/mysite
$ manage.py makemigrations
Migrations for 'blog':
0001_initial.py:
- Create model BlogPost ganiks.liu@MAMIS-GAIKS-LIU /E/mysite
$ ls -l
total 19
-rw-r--r-- 1 ganiks.l Administ 36864 Sep 11 15:07 db.sqlite3
-rwxr-xr-x 1 ganiks.l Administ 249 Sep 11 13:42 manage.py
drwxr-xr-x 1 ganiks.l Administ 0 Sep 11 15:04 mysite ganiks.liu@MAMIS-GAIKS-LIU /E/mysite
$ manage.py migrate
perations to perform:
Apply all migrations: admin, blog, contenttypes, auth, sessions
Running migrations:
Applying blog.0001_initial... OK ganiks.liu@MAMIS-GAIKS-LIU /E/mysite$ ls -l
total 19
-rw-r--r-- 1 ganiks.l Administ 37888 Sep 11 15:09 db.sqlite3
-rwxr-xr-x 1 ganiks.l Administ 249 Sep 11 13:42 manage.py
drwxr-xr-x 1 ganiks.l Administ 0 Sep 11 15:04 mysite

当执行syncdb命令时, Django会查找INSTALLED_APPS中的每一个models.py文件。
并为每一个都创建一个数据库表(多对多关系会有例外)

另外刚刚的过程中还创建了一个超级用户,这个在后面加入Django的自动admin时很方便。

You have installed Django's auth system, and don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'ganiks.liu'): ganiks
Email address: ganiks@qq.com
Password:
Password (again):
Superuser created successfully.

设置自动admin应用:

自动化的后台应用程序admin可以说是Django“皇冠上的明珠”, 任何对为Web应用创建简单的CURD接口感到厌倦的人来说,这是极大的福音,类似Yii的Gii。

由于自动admin不是Django的必要组件,因此你先要在settings.py文件中指定,就跟你刚刚指定mysite.blog一样。
但是呢,其实我这次用的 Django1.7 版本中默认的已经启用了如下app
(我现在看的教程是老版本2008年的,这样可以发现好多Django的进化过程~)

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

还有 urls.py也都配置好了admin路由

from django.conf.urls import patterns, include, url
from django.contrib import admin urlpatterns = patterns('',
# Examples:
# url(r'^$', 'mysite.views.home', name='home'),
# url(r'^blog/', include('blog.urls')), url(r'^admin/', include(admin.site.urls)),
)

最后,你的应用程序要告诉Django要在admin窗口中显示哪一个model可以供编辑;要做到这一点,只要想默认的admin站点注册你的app model即可【添加1,添加2】

from django.db import models
#添加1
from django.contrib import admin # Create your models here.
#django.db.models.Model is the core partof the ORM system of Django
class BlogPost(models.Model):
# Django will add an auto-increment, unique id
title = models.CharField(max_length=150)
body = models.TextField()
timestamp = models.DateTimeField()
#添加2
admin.site.register(BlogPost)

我的app(Blog posts)没有出现在 admin中的3个常见原因:

  • 忘记向 admin.site.register注册你的model类
  • models.py有错误
  • 忘记在settings.py中的INSTALLED_APPS中添加app

现在blog app已经创建完成,如何完善,参看下一篇。

转自:http://www.cnblogs.com/ganiks/p/3967994.html

跟我一起Django - 01 安装和初始化的更多相关文章

  1. 01: 安装zabbix server

    目录:Django其他篇 01: 安装zabbix server 02:zabbix-agent安装配置 及 web界面管理 03: zabbix API接口 对 主机.主机组.模板.应用集.监控项. ...

  2. Tensoflw.js - 01 - 安装与入门(中文注释)

    Tensoflw.js - 01 - 安装与入门(中文注释) 参考 W3Cschool 文档:https://www.w3cschool.cn/tensorflowjs/ 本文主要翻译一些英文注释,添 ...

  3. Django 01 django基本介绍及环境搭建

    Django 01 django基本介绍及环境搭建 #http服务器 #用来接收用户请求,并将请求转发给web应用框架进行处理 #Web应用框架 #处理完请求后在发送给http服务器,http服务器在 ...

  4. Django的安装、使用详解、自动化测试应用以及程序打包

    1.Django的安装 pip install Django 验证 Django 是否能被 Python 识别 >>> import django >>> prin ...

  5. Ubuntu14.04 Django Mysql安装部署全过程

    Ubuntu14.04 Django Mysql安装部署全过程   一.简要步骤.(阿里云Ubuntu14.04) Python安装 Django Mysql的安装与配置 记录一下我的部署过程,也方便 ...

  6. Kali Linux渗透测试实战 1.2 环境安装及初始化

    1.2 环境安装及初始化 目录(?)[-] 环境安装及初始化 下载映像 安装虚拟机 安装Kali Linux 安装中文输入法 安装VirtualBox增强工具 配置共享目录和剪贴板 运行 Metasp ...

  7. 基于iSCSI的SQL Server 2012群集测试(二)--SQL群集安装后初始化配置测试

    4.群集安装后初始化配置测试 4.1 禁用full-text 服务和Browser服务 Full-text服务:公司目前暂不使用,需在两个节点上分别禁用 Browser服务:为保证安全,建议将Brow ...

  8. 【django入门教程】Django的安装和入门

    很多初学django的朋友,都不知道如何安装django开发以及django的入门,今天小编就给大家讲讲django入门教程. 注明:python版本为3.3.1.Django版本为1.5.1,操作系 ...

  9. Linux下Django的安装

    1.下载Django.地址:https://www.djangoproject.com/download/ 2.解压3中得到的Django-1.6.2.tar.gz.使用下面的命令进行解压,解压后在当 ...

随机推荐

  1. Http错误 404.3-Not Found....或者500.19 Internal Server Error

    解决方法:以管理员身份打开VS2010x64位兼容命令提示:aspnet_regiis -i

  2. 到底UDP和TCP是什么个概念?

    今天在论坛看到一牛人对tcp和udp的解释和区分,突然间恍然大悟. 以下全为拷贝. 在现实生活中,“要想富,先修路”:同时人总要“居有定所”,于是盖起了N多的房子.但是当你和同事商量好去做客的时候却发 ...

  3. Java基础之线程——管理线程同步方法(BankOperation2)

    控制台程序. 当两个或多个线程共享同一资源时,例如文件或内存块,就需要采取措施,确保其中的一个线程不会修改另一个线程正在使用的资源.当其中的一个线程更新文件中的某个记录,同时另一个线程正在检索这个记录 ...

  4. 《30天自制操作系统》02_day_学习笔记

    helloos3: helloos.nas的解释在P29中 接下来课本讲了一些汇编语言的知识,便于理解这个汇编文件helloos4: 讲解在P41 helloos.nas后半部分去掉就成了ipl.as ...

  5. css 固定表头的表格,和 width:auto, margin:auto等 自计算方法

    实现思路: 外层用一个table,里面写好Header,然后里面再写一个table里面写好header.然后自己控制overflow的值使内部的tablemargin-top和外层的行高一致就可以实现 ...

  6. Java基础(47):插入排序的Java封装(含原理,可运行,哨兵位的理解见VisualGo上面的动态分析)

    直接插入排序(Straight Insertion Sorting)的基本思想:在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使 ...

  7. 经常遇到Please ensure that adb is correctly located at 'D:\java\sdk\platform-tools\adb.exe' and can be e

     遇到问题描述: 运行android程序控制台输出 [2012-07-18 16:18:26 - ] The connection to adb is down, and a severe error ...

  8. extjs 4.2 日期控件 选择时分秒功能

    因为不支持时分秒,然后在网上也找了一段时间的插件,但是感觉起来都不大方便,最后找一个插件,只需要引用js文件,然后修改类型,就可以实现extjs下面的datafield带时分秒功能了. 步骤: 只需要 ...

  9. C++之路进阶——bzoj2199(奶牛议会)

    F.A.Qs Home Discuss ProblemSet Status Ranklist Contest ModifyUser  gryz2016 Logout 捐赠本站 Notice:由于本OJ ...

  10. paper 42 :图像的小波变换

    关于小波变换我只是有一个很朴素了理解.不过小波变换可以和傅里叶变换结合起来理解. 傅里叶变换是用一系列不同频率的正余弦函数去分解原函数,变换后得到是原函数在正余弦不同频率下的系数. 小波变换使用一系列 ...