Django L1 编写你的第一个Django应用,第1部分

http://python.usyiyi.cn/django/index.html

1 查看django版本

python -c ‘import django ; print(django.get_version())‘
1.10.5

  

创建一个项目

$ django-admin startproject ltest

$tree
.
├── ltest
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── settings.py
│   ├── settings.pyc
│   ├── urls.py
│   └── wsgi.py
├── manage.py

  

settings.py

默认情况下,INSTALLED_APPS包含下面的应用,它们都是Django 与生俱来的:

django.contrib.admin —— 管理站点。你将在本教程的第2部分使用到它。
django.contrib.auth —— 认证系统。
django.contrib.contenttypes —— 用于内容类型的框架。
django.contrib.sessions —— 会话框架。
django.contrib.messages —— 消息框架。
django.contrib.staticfiles —— 管理静态文件的框架。
这些应用,默认包含在Django中,以方便通用场合下使用。

然而上面的部分应用至少需要使用一个数据库表,因此我们需要在使用它们之前先在数据库中创建相应的表。要做到这一点,请运行以下命令:

  

开发服务器

$ python manage.py runserver$ python manage.py runserver 0.0.0.0:8080

  

创建模型

一个项目可以有多个应用,一个应用可以属于多个项目

$ python manage.py startapp polls
$ tree
.
├── ltest
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── settings.py
│   ├── settings.pyc
│   ├── urls.py
│   └── wsgi.py
├── manage.py
├── tasks
│   ├── admin.py
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
└── templates

  

创建模型

cat tasks/models.py
from __future__ import unicode_literals

from django.db import models

# Create your models here.

class Questions(models.Model):
    question_text = models.CharField(max_length=200)
    pub_data = models.DateTimeField(‘data published‘)

class Choice(models.Model):
    question = models.ForeignKey(Questions)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

激活模型

  Django 应用是可以“热插拔”的,即可以在多个项目中使用同一个应用,也可以分发这些应用, 因为它们不需要与某个特定的Django安装绑定。

$grep -Ri  INSTALLED_APPS -A 10 ./ltest/settings.py
INSTALLED_APPS = [
    ‘django.contrib.admin‘,
    ‘django.contrib.auth‘,
    ‘django.contrib.contenttypes‘,
    ‘django.contrib.sessions‘,
    ‘django.contrib.messages‘,
    ‘django.contrib.staticfiles‘,

    ‘tasks‘,
]

  

$python manage.py makemigrations tasks
Migrations for ‘tasks‘:
  tasks/migrations/0001_initial.py:
    - Create model Choice
    - Create model Questions
    - Add field question to choice

有一个命令可以运行这些迁移文件并自动管理你的数据库模式 —— 它叫做migrate,我们一会儿会用到它 —— 但是首先,让我们看一下迁移行为将会执行哪些SQL语句。sqlmigrate命令接收迁移文件的名字并返回它们的SQL语句:

t$ python manage.py sqlmigrate tasks 0001
BEGIN;
--
-- Create model Choice
--
CREATE TABLE "tasks_choice" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "choice_text" varchar(200) NOT NULL, "votes" integer NOT NULL);
--
-- Create model Questions
--
CREATE TABLE "tasks_questions" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "question_text" varchar(200) NOT NULL, "pub_data" datetime NOT NULL);
--
-- Add field question to choice
--
ALTER TABLE "tasks_choice" RENAME TO "tasks_choice__old";
CREATE TABLE "tasks_choice" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "choice_text" varchar(200) NOT NULL, "votes" integer NOT NULL, "question_id" integer NOT NULL REFERENCES "tasks_questions" ("id"));
INSERT INTO "tasks_choice" ("choice_text", "votes", "id", "question_id") SELECT "choice_text", "votes", "id", NULL FROM "tasks_choice__old";
DROP TABLE "tasks_choice__old";
CREATE INDEX "tasks_choice_7aa0f6ee" ON "tasks_choice" ("question_id");
COMMIT;

  

  • sqlmigrate命令并不会在你的数据库上真正运行迁移文件 —— 它只是把Django 认为需要的SQL打印在屏幕上以让你能够看到。 这对于检查Django将要进行的数据库操作或者你的数据库管理员需要这些SQL脚本是非常有用的。
$ python manage.py check #它会检查你的项目中的模型是否存在问题,而不用执行迁移或者接触数据库。
System check identified no issues (0 silenced).

  再次运行migrate以在你的数据库中创建模型所对应的表:

$ python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions, tasks
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying sessions.0001_initial... OK
  Applying tasks.0001_initial... OK

  

迁移功能非常强大,可以让你在开发过程中不断修改你的模型而不用删除数据库或者表然后再重新生成一个新的 —— 它专注于升级你的数据库且不丢失数据。 我们将在本教程的后续章节对迁移进行深入地讲解,但是现在,请记住实现模型变更的三个步骤:

玩转API

$ python manage.py shell
Python 2.7.6 (default, Oct 26 2016, 20:30:19)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>

如果你不想使用manage.py,也没问题。只要设置DJANGO_SETTINGS_MODULE 环境变量为 mysite.settings,启动一个普通的Python shell,然后建立Django:

>>> import django
>>> django.setup()
  

数据库API

给你的模型添加__str__()方法很重要,不仅会使你自己在使用交互式命令行时看得更加方便,而且会在Django自动生成的管理界面中使用对象的这种表示。

__str__ 还是 __unicode__?

对于Python 3来说,这很简单,只需使用__str__()

对于Python 2来说,你应该定义__unicode__()方法并返回unicode 值。Django 模型具有一个默认的__str__() 方法,它会调用__unicode__()并将结果转换为UTF-8 字节字符串。这意味着unicode(p)将返回一个Unicode 字符串,而str(p)将返回一个字节字符串,其字符以UTF-8编码。Python 的行为则相反:对象__unicode__方法调用 __str__方法并将结果理解为ASCII 字节字符串。这个不同点可能会产生困惑。

models.py

from __future__ import unicode_literals

from django.db import models

# Create your models here.

class Questions(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField(‘data published‘)

    def __unicode__(self):      #
        return self.question_text

class Choice(models.Model):
    question = models.ForeignKey(Questions)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

    def __unicode__(self):      #
        return self.choice_text

  

时间: 2024-10-10 09:07:25

Django L1 编写你的第一个Django应用,第1部分的相关文章

Django L2 编写你的第一个Django应用,第2部分¶

创建超级用户 $ python manage.py createsuperuser 启动开发服务器 $ python manage.py runserver 让应用在管理界面中可编辑 $ cat tasks/admin.py from django.contrib import admin # Register your models here. from .models import * 自定义管理表单 $cat tasks/admin.py from django.contrib impor

django官方文档1.6学习笔记-编写你的第一个django程序<2>

写几个有用的视图 每个视图负责做两件事情,返回一个HttpResponse对象包含被请求的页面的内容,或者抛出一个异常,例如Http404.剩下的视图做什么取决于你自己. 你的视图可以从数据库中读记录,或者不读.可以利用一个模板系统比如django自带的或者第三方的Python模板系统,或者不用.可以实时生成一个pdf文件,输出XML,创建一个ZIP压缩包.所有你想做的一切都可以做,使用任何你想使用python类库. 方便起见,我们使用django自带的数据库API,让我们简单的看一个index

django官方文档1.6学习笔记-编写你的第一个django程序

运行环境  centos6.5  django1.6 python2.7.8 python -c "import django;print djang.get_version()" or django.VERSION 创建django项目: django-admin.py startproject mysite 目录结构如下: mysite/                             ###这个名字对django命名成什么都没关系.       manage.py    

Django学习笔记(一):第一个django程序

1.创建和运行 django-admin startproject xxx python manage.py runserver 2.第一个项目程序 wsgi.py中文名:python服务器网关接口.python应用与Web服务器之间的接口(基本不会用到) urls.pyDjango项目中所有地址(页面)都需要我们自己去配置其URL settings.py1.BASE_DIR 指的是项目的根目录2.SECRET_KEY 安全码3.DEBUG 是否开启调试功能4.ALLOWED_HOSTS 这是一

2、编写第一个django app

1.创建project django-admin startproject mysite 输入以上命令后, 在当前目录下生成 mysite 目录 和 相应文件: [[email protected] django]# tree . . └── mysite 项目容器, django 不关注, 可随意命名 ├── manage.py 一种命令行工具,允许你以多种方式与该 Django 项目进行交互,可用 python manage.py help 查看使用方式 └── mysite 项目的pyth

2、编写第一个django应用(投票应用),第二部分简要过程

上一章https://blog.51cto.com/yht1990/2382801 本章节官网详细参考:https://docs.djangoproject.com/zh-hans/2.1/intro/tutorial02/1.配置pymysql代替MySQLdb在需要的项目中(D:\mysite\polls下的init.py)添加如下内容 import pymysql pymysql.install_as_MySQLdb() 2.服务器创建mysite数据库,配置权限允许访问数据库的IP 3.

django (三) 第一个django app 创建model

经过上一章,我们已经创建好一个django app了,接下来,我们开始完善它. 首先,我们先了解些基本概念. Django中创建的每个应用程序都是由Python的包组成,遵循某些约定.Django配有一个实用程序,自动生成一个应用程序的基本目录结构,所以您可以专注于编写代码,而不是创建目录. 那么项目和应用程序到底有什么区别呢? 一个app是一个web应用:比如一个博客系统,一个简单的投票系统.而一个项目是一个集合的配置和应用程序特定的Web站点.一个项目可以包含多个应用程序.应用程序可以存在于

pycharm搭建第一个django项目

用pycharm开发django项目示例 pycharm开发django工程(一) 在pycharm(企业版)中新建Django工程,注意使用虚拟环境 创建成功后,在pycharm显示的工程目录结构如下: 打开pycharm的Terminal,进入该工程的目录新建一个django工程 python3 manage.py startapp django_web 执行成功后,工程目录结构如下: 修改settings.py文件,注册该工程 Django的开发遵循MTV模式(models, templa

Django快速安装以及创建我的第一个Django项目

特别说明:本文是针对Django 1.11和Python 3或更高版本编写的.如果Django版本不匹配,可跳过该文章,或者将您的Django更新到最新版本. 一.Django安装步骤 1.安装版本: Django1.11.1 Django 下载地址:https://www.djangoproject.com/download/ 2.支持的PYTHON版本 django1.11以后不再支持python2.7 ,所以必须是python3版本上 3.安装python3+ Python 下载地址:ht