前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一、Django的基本用法

一、Django的基本用法

作者头像
酱紫安
发布2018-04-16 15:45:03
1.7K0
发布2018-04-16 15:45:03
举报
文章被收录于专栏:python学习路python学习路

学习Django有一段时间了,整理一下,充当笔记。盗张图:

MVC

  • 大部分开发语言中都有MVC框架
  • MVC框架的核心思想是:解耦
  • 降低各功能模块之间的耦合性,方便变更,更容易重构代码,最大程度上实现代码的重用
  • m表示model,主要用于对数据库层的封装
  • v表示view,用于向用户展示结果
  • c表示controller,是核心,用于处理请求、获取数据、返回结果

MVT

  • Django是一款python的web开发框架
  • 与MVC有所不同,属于MVT框架
  • m表示model,负责与数据库交互
  • v表示view,是核心,负责接收请求、获取数据、返回结果
  • t表示template,负责呈现内容到浏览器

一、基本命令

1. 新建一个 django project

代码语言:javascript
复制
django-admin startproject project_name

注意 project_name 是自己的项目名称,需要为合法的 Python 包名,如不能为 1a 或 a-b。

2. 新建 app

要先进入项目目录下,cd project_name 然后执行下面的命令(下同,已经在项目目录下则不需要 cd project_name)

代码语言:javascript
复制
python manage.py startapp app_name

与项目名类似 app name 也需要为合法的 Python 包名,如 blog,news, aboutus 等都是合法的 app 名称。一般一个项目有多个app, 当然通用的app也可以在多个项目中使用。

3. 创建数据库表 或 更改数据库表或字段

代码语言:javascript
复制
Django 1.7.1及以上 用以下命令
# 1. 创建更改的文件
python manage.py makemigrations
# 2. 将生成的py文件应用到数据库
python manage.py migrate
 
 
旧版本的Django 1.6及以下用
python manage.py syncdb

备注:对已有的 models 进行修改,Django 1.7之前的版本的Django都是无法自动更改表结构的,不过有第三方工具 south。这种方法可以在SQL等数据库中创建与models.py代码对应的表,不需要自己手动执行SQL。

4. 使用开发服务器

开发服务器,即开发时使用,一般修改代码后会自动重启,方便调试和开发,但是由于性能问题,建议只用来测试,不要用在生产环境。

代码语言:javascript
复制
python manage.py runserver
 
# 当提示端口被占用的时候,可以用其它端口:
python manage.py runserver 8001
python manage.py runserver 9999# 监听机器所有可用 ip (电脑可能有多个内网ip或多个外网ip)
python manage.py runserver 0.0.0.0:8000
# 如果是外网或者局域网电脑上可以用其它电脑查看开发服务器
# 访问对应的 ip加端口,比如 http://172.16.20.2:8000

5. 清空数据库

代码语言:javascript
复制
python manage.py flush

此命令会询问是 yes 还是 no, 选择 yes 会把数据全部清空掉,只留下空表。

6. 创建超级管理员

代码语言:javascript
复制
python manage.py createsuperuser
 
# 按照提示输入用户名和对应的密码就好了邮箱可以留空,用户名和密码必填
 
# 修改 用户密码可以用:
python manage.py changepassword username

7. 导出数据 导入数据

代码语言:javascript
复制
python manage.py dumpdata appname > appname.json
python manage.py loaddata appname.json

8. Django 项目环境终端

代码语言:javascript
复制
python manage.py shell

这个命令和 直接运行 python 或 bpython 进入 shell 的区别是:你可以在这个 shell 里面调用当前项目的 models.py 中的 API,对于操作数据,还有一些小测试非常方便。如果你安装了 bpython 或 ipython 会自动用它们的界面.

9. 数据库命令行

代码语言:javascript
复制
python manage.py dbshell

在这个终端可以执行数据库的SQL语句。如果您对SQL比较熟悉,可能喜欢这种方式。Django 会自动进入在settings.py中设置的数据库,如果是 MySQL 或 postgreSQL,会要求输入数据库用户密码。

10. 更多命令

代码语言:javascript
复制
终端上输入 python manage.py 可以看到详细的列表,在忘记子名称的时候特别有用。

二、创建项目

1、命令django-admin startproject mysite

  • 进入mysite目录,目录结构如下图:

2、目录说明

  • manage.py:一个命令行工具,可以使你用多种方式对Django项目进行交互
  • templates:模板文件都放到这里
  • 内层的目录:项目的真正的Python包
  • _init _.py:一个空文件,它告诉Python这个目录应该被看做一个Python包
  • settings.py:项目的配置
  • urls.py:项目的URL声明
  • wsgi.py:项目与WSGI兼容的Web服务器入口

 3、配置文件

数据库

代码语言:javascript
复制
DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME':'dbname',
    'USER': 'root',
    'PASSWORD': 'xxx',
    'HOST': '',
    'PORT': '',
    }
}


# 由于Django内部连接MySQL时使用的是MySQLdb模块,而python3中还无此模块,所以需要使用pymysql来代替
  
# 如下设置放置的与project同名的配置的 __init__.py文件中
  
import pymysql
pymysql.install_as_MySQLdb() 

模版

代码语言:javascript
复制
TEMPLATE_DIRS = (
        os.path.join(BASE_DIR,'templates'),
    )

静态文件

代码语言:javascript
复制
STATICFILES_DIRS = (
        os.path.join(BASE_DIR,'static'),
    )

三、新建 app01

1、python manage.py startapp app_name

在一个项目中可以创建一到多个应用,每个应用进行一种业务处理

2、有的版本需要在settings中配置当前app,不然django无法找到自定义的simple_tag,我的Django版本是自己自动就添加上了

代码语言:javascript
复制
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01',
)

 3、model.py

定义模型类

  • 有一个数据表,就有一个模型类与之对应
  • 打开models.py文件,定义模型类
  • 引入包from django.db import models
  • 模型类继承自models.Model类
  • 说明:不需要定义主键列,在生成时会自动添加,并且值为自动增长
  • 当输出对象时,会调用对象的str方法
代码语言:javascript
复制
from django.db import models

class BookInfo(models.Model):
    title = models.CharField(max_length=20)
    pub_date = models.DateTimeField()
    def _ _str_ _(self):
        return "%d" % self.title
  • 生成迁移文件:根据模型类生成sql语句
代码语言:javascript
复制
python manage.py makemigrations
  • 迁移文件被生成到应用的migrations目录
  • 执行迁移:执行sql语句生成数据表
代码语言:javascript
复制
python manage.py migrate 

测试数据操作

  • 进入python shell,进行简单的模型API练习
代码语言:javascript
复制
python manage.py shell

4、视图

  • 在django中,视图对WEB请求进行回应
  • 视图接收reqeust对象作为第一个参数,包含了请求的信息
  • 视图就是一个Python函数,被定义在views.py中
代码语言:javascript
复制
#coding:utf-8
from django.http import HttpResponse

def index(request):
    return HttpResponse("index")
  • 定义完成视图后,需要配置urlconf,否则无法处理请求

第一行是声明编码为utf-8, 因为我们在代码中用到了中文,如果不声明py2就报错.

第二行引入HttpResponse,它是用来向网页返回内容的,就像Python中的 print 一样,只不过 HttpResponse 是把内容显示到网页上。

我们定义了一个index()函数,第一个参数必须是 request,与网页发来的请求有关,request 变量里面包含getpost的内容,用户浏览器,系统等信息在里面。

函数返回了一个 HttpResponse 对象,可以经过一些处理,最终显示几个字到网页上。

5、URLconf

  • 在Django中,定义URLconf包括正则表达式、视图两部分
  • Django使用正则表达式匹配请求的URL,一旦匹配成功,则调用应用的视图
  • 注意:只匹配路径部分,即除去域名、参数后的字符串
  • 在mysite中的urls.py中添加urlconf
代码语言:javascript
复制
from django.conf.urls import url
from django.contrib import admin
from App01 import views

urlpatterns = [
    url(r'^$', views.index),
]

四、运行

在终端上运行 python manage.py runserver

我们打开浏览器,访问 http://127.0.0.1:8000/

会在浏览器上看到:index。这个词

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-04-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MVC
  • MVT
  • 一、基本命令
    • 1. 新建一个 django project
      • 2. 新建 app
    • 3. 创建数据库表 或 更改数据库表或字段
      • 4. 使用开发服务器
        • 5. 清空数据库
          • 6. 创建超级管理员
            • 7. 导出数据 导入数据
              • 8. Django 项目环境终端
                • 9. 数据库命令行
                  • 10. 更多命令
                    • 1、命令django-admin startproject mysite
                    • 2、目录说明
                    •  3、配置文件
                    • 1、python manage.py startapp app_name
                    • 2、有的版本需要在settings中配置当前app,不然django无法找到自定义的simple_tag,我的Django版本是自己自动就添加上了
                    •  3、model.py
                    • 4、视图
                    • 5、URLconf
                • 二、创建项目
                • 三、新建 app01
                • 四、运行
                相关产品与服务
                数据库
                云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档