文档章节

Django第一期

字数 1058
阅读 10
收藏 0
点赞 0
评论 0

安装Django

去https://www.djangoproject.com/download/ 下载最新版的Django,然后解压放到Anaconda\Lib\site-packages目录下,然后cmd进入此目录,输入安装命令:

python setup.py install

安装成功后,配置系统环境变量,将Anaconda\Lib\site-packages\Django-2.0.6添加到PATH中

创建项目

django-admin startproject mysite

生成的项目的结构为:

mysite/                  # container for project
    manage.py            # command-line utility
    mysite/                # actual Python package for project
        __init__.py        # empty file, tells python that this directory considered as a python package
        settings.py        # configuration for project
        urls.py            # URL declaration for project
        wsgi.py            # An entry-point for WSGI-compatible web server to serve project

运行项目

python manage.py runserver

python manage.py runserver 0:8000  # 0.0.0.0:8000的缩写

运行项目的同时可以配置IP和port,默认开启8000端口

如果在运行的时候,发生utf8的编码问题,可能是计算机名字为中文导致!!!

创建app(个人理解成功能块)

一个Django实例包含多个INSTALLED_APPS,它们也可以在多个实例中使用。默认情况下,会包含下面这些APPS

  • django.contrib.admin 管理员站点
  • django.contrib.auth 一个身份验证系统
  • django.contrib.contenttypes 一个content types的框架
  • django.contrib.sessions 一个会话框架
  • django.contrib.messages 一个消息框架
  • django.contrib.staticfiles 一个管理静态文件的框架

包含这些常用的APPS会提供一些便利

一个project包含若干个app和配置信息,其中每个app实现某个功能,并且可以存在于多个project中

python manage.py startapp polls

一旦创建好后,polls就会存在于manage.py同层目录,然后来看下整个项目的结构

mysite/
    db.sqlite3
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        wsgi.py
    polls/
        __init__.py
        admin.py
        apps.py
        migrations/
            __init__.py
        models.py
        tests.py
        views.py

自定义的APP的目录下,有个apps.py文件,里面有个config类,需要将这个类名添加到settings.py的INSTALLED_APPS中去,最后一个就是自己添加进去的

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
	'polls.apps.PollsConfig',
]

urls.py

urlpatterns=[

    path(<URLPattern>, <function>),

    path(<URLPattern>, include(<other_URLPattern>))
]

path(route, view, [**kwargs, name])

  • route:包含URL模式的字符串,在处理一个request时,Django从urlpatterns中的第一个模式开始遍历,直到找到一个匹配的模式
  • view:当Django找到一个匹配的模式,就会调用指定的view函数,以HttpRequest对象和任何捕捉到的值作为关键字参数
  • kwargs:以词典的形式传递的任意关键字参数
  • name:给你的URL命名,以免与Django其它的URL发生因同名而模棱两可的情况

启动数据库

默认使用SQLite,如果要换,需要更改配置信息。

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

其中ENGINE要改为django.db.backends.postgresql/django.db.backends.mysql/django.db.backends.oracle

NAME是数据库名字,如果不是sqlite3还需要自己添加USER,PASSWORD,HOST等配置信息,如下图是一个mysql的配置样例:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test',
		'USER':'root',
		'PASSWORD':'root',
		'HOST':'localhost',
		'PORT':'3306',
    }
}

每个APPS都会使用若干个数据库,我们需要首先创建这些数据库,使用下面的命令来创建:

python manage.py migrate

migrate命令将查看settings.py文件中所有的INSTALLED_APPS并创建他们所需的数据库和表。

创建models

借助元数据来定义数据库布局

class Question(models.Model):
	question_text = models.CharField(max_length=200)
	pub_date = models.DateTimeField('date published')

在APP/models.py里面创建类,每个类都继承于models.Model,类变量相当于数据库的字段,所以和scrapy类似,Django提供了一个Field类,所有的字段都是Field的实例。比如CharField()将创建一个字符字段(char),DateTimeField()将创建一个datetime类型的字段

这里创建的每个类变量,不仅仅将成为数据库的字段名/列名,也将在python代码中供使用

激活models

创建和修改models都需要创建migration(它存储的是你对models的改动)

python manage.py makemigrations <app_name>

这个命令会在app目录下的migrations/001_initial.py中创建model对应的migration

然后我们需要将这个migration应用到数据库中去

python manage.py migrate

也可以通过下面的命令来得到model对应的sql代码

python manage.py sqlmigrate <app_name> 0001

创建管理员用户

python manage.py createsuperuser

 

© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 15
码字总数 8433
作品 0
武汉
Python北京开发者活动第一期PPT出炉啦

Python北京开发者活动第一期PPT出炉啦 小明明s à domicile2017-10-278 阅读 Python Python 北京开发者活动第一期结束了,虽然我没有参加,不过仍然第一时间拿到了主题的幻灯片分享给大家。和...

小明明s à domicile
2017/10/27
0
0
基于 HttpRunner 的接口测试平台--HttpRunnerManager

摘要:一直以来想做一个接口测试平台,恰巧偶然发现@debugtalk的HttpRunner系列文章(非常感觉debugtalk,如有冒犯,还请多多包涵),觉得很适用于大部分的接口测试,也在自己公司中慢慢适用,其...

TesterHome
01/08
0
0
通过Nginx架设灵活的网站静态化方案

最近在做一个网站项目,功能基本已经完成,目前主要的难点在于性能的调优上,其实网站第一期已经上线,目前正在进行第二期的改版中,而性能也归为第二期的 重点。 第一期的主要任务是功能的实...

鉴客
2010/06/11
4.7K
2
OSChina 技术周刊第十八期

每周技术抢先看,总有你想要的! 移动开发 【软件】开源 Android ORM 框架 OpenDroid 【博客】自己动手做推送 前端开发 【软件】jQuery 全屏滚动插件 fullPage.js 服务端开发/管理 【软件】W...

OSC编辑部
2015/01/18
353
0
Django 1.4 即将发布,将逐步支持Python 3

Django 1.4 今天发布了 RC2 版本,而 Django 1.4 正式版也将很快发布,仍然不支持Python 3,但是该团队为开发者带来了一个好消息,他们计划将Python 2.6作为跳板,逐步使Django支持 Python 3...

鉴客
2012/03/15
2.2K
10
2018年云栖社区值得订阅的11个精选技术期刊!

导语:近日,云栖社区全新推出垂直技术内容订阅平台,平台将以电子版周刊、月刊、每日导读等形式,为您呈现各垂直技术领域优质内容集锦。您只需通过一次简单订阅操作,即可定期接收到感兴趣的...

阿里云云栖社区
01/08
0
0
如何根据文件内容给文件重命名?(批量)

下面是一个实例,其他文件的结构相同 文件前几行如下: 潮流口味之摄影 米原康正的“一期一会” 文/金雯

计算改变生活
2013/05/27
582
5
《Django企业开发实战》大纲-草稿

《Django企业开发实战》大纲-草稿 the5fire的技术博客2017-07-2016 阅读 在国内写技术书籍可能是件吃力不讨好的事情,弄不好还会被骂,所以大部分有能力写书的人,不想在这个上面花那么多时间...

the5fire的技术博客
2017/07/20
0
0
PostgreSQL 发布第一期杂志

PGMag (PostgreSQL Magazine) 团队很高兴的发布了首期杂志。第一期杂志的出版得到很多作者、编辑等人员的帮助。 第一期杂志的内容包括: PostgreSQL 9.1 : 10 个非常帮的新特性 NoSQL : The ...

oschina
2012/05/10
2.2K
24
PHPthinking赠书了!

【站长赠书】2014年10月第一期幸运用户 大家好,我是PHP开发学习门户的站长,小站建站一个多月,感谢大家以来的关注和支持,如果大家对本站有什么建议或者投稿,欢迎留言或者给我发邮件。 本...

PHP开发学习门户
2014/10/31
0
2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

华为nova3超级慢动作酷玩抖音,没有办法我就是这么强大

华为nova3超级慢动作酷玩抖音,没有办法我就是这么强大!华为nova3超级慢动作酷玩抖音,没有办法我就是这么强大! 在华为最新发布的nova 3手机上,抖音通过华为himedia SDK集成了60fps、超级...

华为终端开放实验室
12分钟前
0
0
多 SSH Key 实现同一台服务器部署多 Git 仓库

本文以以下需求为背景,介绍详细的做法: 需在同一台服务器同时部署两个不同的 Github 仓库(对 Bitbucket 等 git 服务同样适用) root 用户可在远程登录 SSH 后附上预期的 SSH Key 进行 gi...

yeahlife
14分钟前
0
0
003. es6数值的扩展

一、普通扩展 Number 方法,将字符串、数值转为十进制 : Number('0b111') Number.isFinite() 用来检查一个数值是否为有限的:Number.isFinite(15) Number.isNan() 用来检查一个值是否为NaN N...

秋季长青
28分钟前
0
0
rabbitmq学习(二)

基本队列:Producer直接发送信息到Queue中,Consumer接收Queue发送过来的信息 简而言之,一个生产者发送信息,一个消费者接收信息。 获取连接工具类: package com.example.demo.utils;i...

人觉非常君
33分钟前
0
0
C语言数组和指针的语法糖

对于C语言,我可以这样秀:比如当创建一个数组arr[n]之后,一般我们去遍历数组的时候是for (int i = 0; i < n; i++) { a[i]; }但是我知道下表访问符[]是个语法糖,也就是说a[i]在编译器看来是...

ustbgaofan
36分钟前
0
0
Call to undefined function bcmath()的解决方法

乐意黎的ECS主机环境,Centos7.2 + PHP7 由于使用了bcdiv()函数,运行时总在抛错。 Fatal error: Call to undefined function bcmath() in /usr/loca/apache/htdocs/... on line 4 一查得知:......

dragon_tech
42分钟前
0
0
css优先级

..

architect刘源源
46分钟前
0
0
【转】Twitter的分布式自增ID算法snowflake

结构 snowflake的结构如下(每部分用-分开): 0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000 第一位为未使用,接下来的41位为毫秒级时间(41位的长度可以...

talen
51分钟前
0
0
hive支持行级修改

Hive从0.14版本开始支持事务和行级更新,但缺省是不支持的,需要一些附加的配置。要想支持行级insert、update、delete,需要配置Hive支持事务。 一、Hive具有ACID语义事务的使用场景 1. 流式...

hblt-j
56分钟前
0
0
Python---scrapy框架的学习

scrapy框架的学习 先熟悉下scrapy项目结构: scrapyTest/scrapyTest/ _init_.py用来初始化项目信息 scrapyTest/scrapyTest/ items.py文件为爬虫项目的数据容器文件,主要用来定义我们的数据....

android-key
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部