第一个 Django Project开发

本篇文章是 官网https://docs.djangoproject.com/en/1.7/intro/tutorial01/” 的实践版本。由于原文有较多的解释成分以及用英语书写不便于快速进入Django的开发。所以才有本文。

Part 1. 环境搭建测试

如需转载请注明出处:*************************** 谢谢。

1. 环境

Ubuntu 13.10    # cat /etc/issue  进行查看

Python 3.3.2+   # python -V         进行查看

Django 1.7.3.       # python -c "import django; print(django.get_version())"      进行查看

http://blog.csdn.net/michael_kong_nju/article/details/42878651 在这篇文章中记录了,如何安装以及升级

如果python的版本有区别的话,比如2.x.x那么在语法上会有区别。

2.  创建一个工程

我们将工程放在 /opt/django_programming/下面。

# cd /opt/django_programming
# django-admin.py startproject mysite   %%跟官方教程一致,我们新建的project取名为 mysite.

然后我们就完成了一个mysite项目的创建。我们用 tree命令查看刚才创建的结构。

[email protected]:/opt/django_programming# tree
.
└── mysite    %%%%外部的这个mysite就是刚才我们project的名字。这里就是一个容器,用来存放project的一些内容。
    ├── manage.py
    └── mysite
        ├── __init__.py
        ├── settings.py    %%%% Django Project的配置文件。
        ├── urls.py
        └── wsgi.py

3. 创建数据库。

注意这里面作为Django的快速入门,我们使用的是python自带的Sqlite3数据库。如果是实际的开发商业项目不主张这么开做。可以查看后面的博文:*************

# vim  mysite/settings.py           %%%%%%打开配置文件,找到DATABASE数组内容,对DATABASE不做修改。
  DATABASES = {
     default': {
           'ENGINE': 'django.db.backends.sqlite3',                 %%%%默认使用的sqlite3数据库。如果之后需要关联别的如mysql 只需要在这里进行处理。
           'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),          %%名称
         }
      }
 将TIME_ZONE修改为:   TIME_ZONE = 'Asia/Shanghai'. 保存退出之后执行:
 #  python manage.py migrate         

至此数据库建立完成。

4.  开启服务器

这里我们使用Django自带的服务器,只需要使用下面命令就可以开启:(因为此命令不能中断,所以建议开启新的终端来运行这个命令)

 #  python manage.py runserver    %%%%%%%%%也可有用这个命令:  python manage.py runserver 0.0.0.0:8000    指定ip和端口,这里使用默认

然后在服务器中打开http://127.0.0.1:8000/可以看到一个欢迎界面。

至此一个project已经完成了,即我们完成了一个project的架构,下面我们开始建立具体的 应用(app)

5.  创建APP

这里创建 polls这个投票应用。 在与manage.py相同目录下执行下面命令:

  #  python manage.py startapp polls

然后我们发现在当前目录下新建了一个polls目录,用tree命令查看文件结构.之后我们修改 polls下面的models.py文件。简单来说models存储了我们对数据模式格式的定义

# vim polls/models.py

然后在 # Create your models here 下面加入:

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)

保存退出。这里定义了python的两个类分别是 Question 以及 Choice

6. 激活polls的model

修改 mysite/setting.py中的 INSTALL_APPS数组

# vim mysite/setting.py
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">在INSTALL_APPS 数组的后面加入 'polls',使得下次创建APP时候会将polls一起创建。</span>
INSTALLED_APPS = (
    ‘django.contrib.admin‘,
    ‘django.contrib.auth‘,
    ‘django.contrib.contenttypes‘,
    ‘django.contrib.sessions‘,
    ‘django.contrib.messages‘,
    ‘django.contrib.staticfiles‘,
    ‘polls‘,
)

保存退出,执行:

# python manage.py makemigrations polls

出现如下执行结果:

Migrations for ‘polls‘:
  0001_initial.py:
    - Create model Question
    - Create model Choice
    - Add field question to choice

运行下面语句查看返回的sql语句。

#python manage.py sqlmigrate polls 0001

下面是我的终端输出的信息:

BEGIN;
CREATE TABLE "polls_choice" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "choice_text" varchar(200) NOT NULL, "votes" integer NOT NULL);
CREATE TABLE "polls_question" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "question_text" varchar(200) NOT NULL, "pub_date" datetime NOT NULL);
CREATE TABLE "polls_choice__new" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "choice_text" varchar(200) NOT NULL, "votes" integer NOT NULL, "question_id" integer NOT NULL REFERENCES "polls_question" ("id"));
INSERT INTO "polls_choice__new" ("choice_text", "question_id", "id", "votes") SELECT "choice_text", NULL, "id", "votes" FROM "polls_choice";
DROP TABLE "polls_choice";
ALTER TABLE "polls_choice__new" RENAME TO "polls_choice";
CREATE INDEX "polls_choice_7aa0f6ee" ON "polls_choice" ("question_id");

运行下面语句使得生成数据表

# python manage.py migrate

输出如下信息,数据表创建成功。

[email protected]:/opt/django_programming/mysite# python manage.py migrate
Operations to perform:
  Apply all migrations: sessions, admin, contenttypes, polls, auth
Running migrations:
  Applying polls.0001_initial... OK

至此完成了polls模型的创建。

7. 下面我们尝试使用sqlite在django中的api.

# python manage.py shell  %%进入交互界面

依次:

>>>from polls.models import Question, Choice    %%导入我们刚才床家你的模型类
>>>Question.objects.all()  
>>> from django.utils import timezone
>>> q = Question(question_text="What's new?", pub_date=timezone.now()) %%添加数据
>>> q.save()

如果没有出错表明ok,还有好多API可供使用,这里就不一一阐述,可以做参考官方网站的教程:

https://docs.djangoproject.com/en/1.7/intro/tutorial01/#writing-your-first-django-app-part-1

至此我们完成了环境的搭建,并且创建了project以及app,下面我们具体的做开发。

Part2. 实例开发

时间: 2024-08-03 12:01:27

第一个 Django Project开发的相关文章

Python开发入门与实战2-第一个Django项目

2.第一个Django项目 上一章节我们完成了python,django和数据库等运行环境的安装,现在我们来创建第一个django project吧,迈出使用django开发应用的第一步. 2.1.创建第一个Django项目 我们创建一个我们存放Django的工作目录,示例:C:\My Files\Python Projects 在命令提示符窗口进入到刚才创建的目录,运行运行命令: django-admin.py startproject mysite 这样会在你的当前目录下创建一个目录mysi

用python+django+twistd 开发一个属于自己的运维系统

开源的运维系统不少,比如nagios.zabbix.cati等等,但是遇到自己个性化的运维需求的时候,总是显的力不从心!最近在学习python,所以就考虑用python+django+twisted来定做一个完全个性化的运维系统. 运维系统有几个主要的功能:监控.分析.报警.更甚者直接根据分析的结果进行反应操作.而以上几点通过上述的框架可以比较容易的实现. 下面上图说明: 使用freemind整理了下思路: 下面是一些代码段,完整的代码下载见文档底部: Server: #!/usr/bin/en

Django Web开发学习笔记(5)

第五部分 Model 层 创建一个app工程.app和project的区别引用DjangoBook的说法是: 一个project包含很多个Django app以及对它们的配置. 技术上,project的作用是提供配置文件,比方说哪里定义数据库连接信息, 安装的app列表, TEMPLATE_DIRS ,等等. 一个app是一套Django功能的集合,通常包括模型和视图,按Python的包结构的方式存在. 例如,Django本身内建有一些app,例如注释系统和自动管理界面. app的一个关键点是它

[Python] Create a new Django project in Pycharm

From: http://blog.csdn.net/u013088062/article/details/50158239     创建新工程 1.主题 这部分教程主要介绍如何通过Pycharm创建.管理.运行一个Django工程. Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模式,即模型M,视图V和控制器C. 2.准备工作 (1)Pycharm为3.0或者更高版本. (2)电脑上至少安装了一个Python解释器,2.4到3.3版本均可. 这部分教程

Django模型开发 --python数据库连接

在Django中,视图负责处理一些业务逻辑,然后返回响应结果.在当代Web应用中,业务逻辑经常牵涉到与数据库的交互,在后台连接数据库服务器,从中取出一些数据,然后在Web页面用漂亮的格式展示这些数据.这个网站也可能会向访问者提供修改数据库数据的方法. 在这一篇博文中,我们将以MySQL数据库为例,先看看不使用Django模型的数据库查询方法,然后开始学习Django的模型. 1. 不使用模型的数据库查询方法 假如我们不采用Django的模型,如何从数据库中获取数据呢?通常的做法就是在视图(Vie

Django Web开发学习笔记(4)

第四章 模板篇 上一章的内容,我们将HTML的代码和Python代码都混合在了在view.py的文件下.但是这样做的坏处无疑是明显的,引用DjangoBook的说法: 对页面设计进行的任何改变都必须对 Python 代码进行相应的修改. 站点设计的修改往往比底层 Python 代码的修改要频繁得多,因此如果可以在不进行 Python 代码修改的情况下变更设计,那将会方便得多. Python 代码编写和 HTML 设计是两项不同的工作,大多数专业的网站开发环境都将他们分配给不同的人员(甚至不同部门

搭建第一个Django网站

1:搭建第一个Django网站 我的环境安装了anaconda3.X,已经自带了django框架. C:\Users\he>conda list Django # packages in environment at F:\ai\install\Anaconda3: # # Name Version Build Channel django 2.2.3 pypi_0 pypi 1.手动创建第一个djangdo项目 ##1:切换目录 pushd F:\ai\projects   #进入命令行,切换

七日Python之路--第十二天(Django Web 开发指南)

<Django Web 开发指南>.貌似使用Django1.0版本,基本内容差不多,细读无妨.地址:http://www.jb51.net/books/76079.html (一)第一部分 入门 (1)内置数字工厂函数 int(12.34)会创建一个新的值为12的整数对象,而float(12)则会返回12.0. (2)其他序列操作符 连接(+),复制(*),以及检查是否是成员(in, not in) '**'.join('**')   或  '***%s***%d' % (str, int)

Django 初探--Django的开发服务器及创建数据库(笔记)

1.Django的开发服务器 Django框架中包含一些轻量级的web应用服务器,开发web项目时不需再对其配置服务器,Django提供的内置服务器可以在代码修改时自动加载,从而实现网站的迅速开发. 在我们创建的Django_Pro项目的目录下,打开Dos命令行,启动内置服务器: manage.py runserver 默认情况下,使用命令manage.py runserver 启动内置服务器,默认使用本机8000端口,若需要使用其他端口(例如8001),则使用命令 manage.py runs