Django常用命令

创建Django项目

Django-admin startprotect  mysite

创建项目以后,以下生成的文件

最外层的file:mysite/ 根目录只是你的项目的容器,Django不关心它的名字,你可以将它重命名为任何你喜欢的名字

manage.py: 一个让你用各种方式管理Django项目的命令行工具。可以阅读:django-admin and manage.py  获取更多manage.py的细节

里面一层的mysite/目录包含你的项目 它是一个纯python的包。它的名字就是当你引用它内部任何东西时需要用到的python包名 (比如:mysite.urls)

mysite/__init__.py: 一个空的文件夹,告诉python这个目录应该被认为是一个python包 

mysite/settings.py: Django项目配置文件。 

mysite/urls.py: Django项目的URL声明,就像你网站的“目录”

mysite/wsgi.py: 作为你的项目的运行在WSGI 兼容的web服务器上的入口。

修改settings文件以下行:

1. ALLOWED_HOSTS=['*'] 允许的主机后面加*或者加对应的ip

2. LANGUAGE_CODE='zh-Hans' 语言编码改为:zh-Hans

3. TIME_ZONE='Asia/Shanghai' 时区必变 Asia/Shanghai

4. USE_TZ=False 改为 False

创建App

python manage.py startapp polls

app 创建完以后, 修改settings 文件以下内容

修改urls内容 (作为跳转使用, 方便以后管理)

注: 何时使用include

path的四个参数(两个必传,两个可选)
path参数: route
path参数:views
path参数:kwargs
path参数:name
创建完成以后,polls文件夹下面的内容为:

 创建urls.py文件,写以下图内容

写models文件

from django.db import models
# 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, on_delete=models.CASCADE)
  choice_text = models.CharField(max_length=200)
  votes = models.IntegerField(default=0)

  

生成models迁移文件

python manage.py makemigrations polls

注:如果不写polls的话,为全部APP

把迁移文件写入数据库

python manage.py migrate

进入shell环境:

python manage.py shell

通过模型类操作数据表

# 进入shell环境以后,首先导入模型
from polls.models import * # 导入全部模型
from django.utils import timezone  # 导入时间模块
# 创建方法一:
q = Question(question_text="什么地方的菜最有特色?", pub_date=timezone.now())
q.save()
# 关联创建,用问题关联创建选项
q.choice_set.create(choice_text="湖南")
# 创建方法二:
q = Question()      # 创建实例对象
q.question_text = "什么地方的菜最有特色?"
q.pub_date = timeaone.now()
q.save()
# 创建方法三:
Question.objects.create(question_text="什么地方的菜最有特色?",
pub_date=timezone.now())# ***********************************************
# 修改方法一:
Question.objects.update(question_text = "什么地方最好玩?")
# 修改方法二:(这个方法不适合批量修改,只以最后一次保存为准,请谨慎使用)
q.question_text = "什么地方的菜最有特色?"
# ***********************************************
# 删除:(先查询到某个id的内容,然后用删除命令)
q = Question.objects.get(id=1)
q.delete()
# ***********************************************
# 查询
q = Question.objects.all()  # 查询全部
q = Question.objects.get(id=1)  # 查询指定的一个
Question.objects.filter(question_text__startswith='什么地方')  # 过滤查询,查询 以某某
开头的内容
q.choice_set.count()  # 查询跟本问题关联的选项的个数
Choice.objects.filter(question__pub_date__year=current_year)  # 查找问题发布日期为本年
的所有的选项
# 关联查询
q.choice_set.all()  # 查询跟这个问题关联的所有的选项

运行项目 (python manage.py runserver)

一、本机测试运行命令

# 在cmd命令行,cd进入项目所在目录,调试好当前项目所用的python环境,我这里用的py_data环境,使用
python manage.py runserver 命令
(py_data) D:\python\django\mysite>python manage.py  runserver

二、 本机做为主机运行命令 (python manage.py runserver 0.0.0.0:8080)

# 在cmd命令行,cd进入项目所在目录,调试好当前项目所用的python环境,我这里用的py_data环境,使用
python manage.py runserver 命令
(py_data) D:\python\django\mysite>python manage.py  runserver 0.0.0.0:8080

编写views

往页面上渲染文字, 不做任何跳转, 用HttpResponse

from django.http import HttpResponse  # 导入django内置模块 HttpResponse
def index(request):
  """
 测试:只往网页上返回文字
 """
return HttpResponse("<h2>Hello World!!</h2>")  # 可以写入H5标签

用一个APP之间跳转使用render

from django.shortcuts import render  # 导入django内置模块render
def index(request):
  """
 测试:同一App之间的页面跳转
 context为字典形式,里面传入的内容为键值对形式,为需要往网页上面渲染的内容
 """
context = {}
return render(request, "polls/index.html", context)

不同app之间的页面跳转使用HttpResponseRedirect和reverse搭配使用

from django.http import HttpResponseRedirect
from django.urls import reverse
def login(request):
  """
 测试:登陆成功,跳转网站首页
 """
  info = dict(rquest.POST)
  '''判断登陆信息与数据库是否相同,如果相同做以下跳转'''
 return HttpResponseRedirect(reverse("index:index"))
  '''判断登陆信息与数据库如果不相同,做以下跳转'''
 return render(request, "polls/index.html", context={"message": "账号和密码不对,请
重新登陆"})

提取权限控制,get和post访问返回提示

from django.shortcuts import render
from django.http import HttpResponse
# 提取共同的方法,写成装饰器,在需要用到的地方,加上这个权限控制
# 访问页面如果用的是post请求,执行views里面加入装饰器的方法,
# 如果用的是get请求,返回没有权限浏览页面
def verify_control(fun):
  def verify_con(request):
    if request.method == 'POST':
      return fun(request)
    elif request.method == 'GET':
      return HttpResponse("你没有权限浏览该网页")
  return verify_con

接口写法,返回形式为json格式

from .models import *
import json
from .verify import *  # 导入写入的权限控制
import re
from django.shortcuts import render
from django.http import HttpResponse
@verify_control # 加入装饰器,如果用的get方式提交,则提示没有权限
def api_add_question(request):
  """
   测试:用接口的形式提交
   本接口为前端新建问题,用post提交数据
   需要用到的参数:{"question_text": "xxx","pub_date":"2019-01-17"}
 """
  info = dict(request.POST)
  try:
    Question.objects.get(question_text=info["question_text"][0])
  except Subject.DoesNotExist:
新建teamplates和static文件夹
teamplates(里面放的是网站的html文件)
static(里面放的是css,js ,图片,音乐,视频等一系列的文件)
注:teamplates下面新建app同名的目录,方便以后发布网站时,整理静态文件和html文件
    Question.objects.create(question_text=info["question_text"][0],
                pub_date=info["pub_date"][0])
    return HttpResponse(json.dumps({"message": "添加成功"}))
  else:
    return HttpResponse(json.dumps({"message": "该问题已经存在,不需要重添加"}))

新建teamplates和static文件夹

teamplates(里面放的是网站html文件)

static (里面放的css,js,图片,音乐,视频等一系列的文件)

注意!!!:teamplates下面新建app同名的目录,方便以后发布网站时,整理静态文件和html文件

python Django基础操作的更多相关文章

  1. Python文件基础操作(IO入门1)

    转载请标明出处: http://www.cnblogs.com/why168888/p/6422270.html 本文出自:[Edwin博客园] Python文件基础操作(IO入门1) 1. pyth ...

  2. python django基础五 ORM多表操作

    首先在创建表的时候看下分析一下 1.作者表和作者详细地址表  一对一关系 理论上谁都能当主表 把Author设置成主表 au=models.OneToOneField(to='AuthorDetail ...

  3. python django基础(二)

    django MTV模式之----template模版 django是动态的网页,后台的数据需要动态的插入到前端中,这时就依赖于django的template模版框架.django支持多种模版框架,下 ...

  4. python django基础(一)

    Django简介:Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的框架模式,即模型M,视图V和控制器C.不过在Django实际使用中,Django更关注的是模型(Mod ...

  5. python django基础四 ORM简介

    ORM,全称是object relation mapping.翻译过来,就是对象关系映射. 主要来学习MySQL操作,MySQL是一个软件.它的优点:1.免费 2.开源 pymysql,就是Mysql ...

  6. python django基础三 模版渲染

    request对象 当一个页面被请求时,Django就会创建一个包含本次请求原信息的HttpRequest对象.Django会将这个对象自动传递给响应的视图函数,一般视图函数约定俗成地使用 reque ...

  7. python django基础一web框架的本质

    web框架的本质就是一个socket服务端,而浏览器就是一个socker客户端,基于请求做出相应,客户端先请求,服务器做出对应响应 按照http协议的请求发送,服务器按照http协议来相应,这样的通信 ...

  8. Python Django 数据库操作

    1. 建立app 在自己的工程项目目录下输入: python manage.py startapp myapp(你想建立的app名称) 建立一个叫myapp的app 这样,在你的工程项目目录下会出现一 ...

  9. Python 第三篇(上):python文件基础操作、json模块、lambda、map、filter、reduce和函数位置参数

    python一切皆对象,linux一切皆文件,python操作文件是很常见的O/I操作,其内置来open()函数可以完成文件的基本操作: 一:使用内置open()函数操作文件,基本语法如下: with ...

随机推荐

  1. python3实例

    1.一行代码求一个数的阶乘 例如:求5的阶乘 from functools import reduce print((lambda k: reduce(, k+), ))()) 借鉴:https:// ...

  2. LeetCode 第 152 场周赛

    一.质数排列(LeetCode-1175) 1.1 题目描述 1.2 解题思路 先统计出1-n中有多少个质数,得到质数个数\(x\),剩下的数\(y = n - x\): 使用排列组合公式得出结果 \ ...

  3. sqlserver 动态sql执行execute和sp_executesql

    sp_executesql的运用 书写语法要点: exec sp_executesql @sql,N’参数1 类型1,参数2 类型2,参数3 类型3 OUTPUT’,参数1,参数2,参数3 OUTPU ...

  4. Qt编写自定义控件52-颜色下拉框

    一.前言 这个控件写了很久了,元老级别的控件之一,开发之初主要是自己的好几个项目要用到,比如提供一个颜色下拉框设置对应的曲线或者时间颜色,视频监控项目中经常用到的OSD标签设置,这个控件的难度系数接近 ...

  5. Microsoft Visual Studio(VS)启动报安装过程中无法运行

    开机启动VS提示无法运行,很可能VS正在更新,可以等待几分钟更新完成,再次运行VS. 也可以把更新进程结束,进程名:VSIXAutoUpdate.exe

  6. 雨田家园 delphi 拆分字符串

    最近在使用Delphi开发一种应用系统的集成开发环境.其中需要实现一个字符串拆分功能,方法基本原型应该是:procedure SplitString(src: string ; ch: Char; v ...

  7. java构造方法前加void有什么作用

    构造方法前面是没有任何返回符,不能加任何返回类型,包括void.一个构造方法一旦加了void,那么这个就不是构造方法了,变成了一个普通的方法.至于你程序出现的情况,是这样的.任何一个Java类,如果你 ...

  8. 基于OpenCV的同态滤波

    在4.0.1节中,我们已经介绍了一个简单的图像形成模型,即照射-反射模型.这个模型可以开发一种频率处理程序,该程序可以同时压缩灰度范围和增强对比度来改善一幅图像的表现.图像形成的照射-反射模型的表达式 ...

  9. spring boot 单选按钮

    jsp代码 性别: <form:radiobutton path="xb" value="男"/>男 <form:radiobutton pa ...

  10. 按css查询多个元素

    示例2 查询多个元素 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 <!DOC ...