一,首先说下什么是Django,Django其实就是一个框架,用python写的,能开发网站之类的。

二,django的组成

1,urls:网址入口关联到对应的views视图函数,(采用mvc开发模式的可能是generic类),访问网址就对应一个函数。

2,views:用于处理用户发出的请求,从urls对应过来,通过渲染templates中的网页可以将显示的内容,比如登录后的用户名,用户请求的数据输出到网页。

3,models:涉及到的是对数据库的操作,定制列,表名等。

4,forms:表单,这个设计到用户在浏览器上输入数据提交的验证,也可以用来生成一些输入框。

5,templates:上面提及的views的渲染的模板就在这个文件包里面,如果需要提高django页面缓存的速度,可以加上缓存。

6,admin:这个呢是django自带的非常强大的后台管理系统,当然可以使用新的Xadmin,更加强大。

7,settings:这个是django的配置文件,包括数据库的连接,日志系统的配置,文件上传下载路径等等。

新建项目:django-admin.py startproject project-name

新建一个app:python manage.py startapp app-name

一般一个项目有多个app, 当然通⽤的app也可以在多个项目中使用。

同步数据库操作:

python manage.py makemigrations
python manage.py migrate

运行项目:python manage.py runserver

当提示端口被占用:python manage.py runserver 8001-9999

监听所有可用IP:python manage.py runserver 0.0.0.0:8000

如果是外网进行访问:http://192.168.23.15:8000(格式是http://+ip+端口号)

清空数据库:python manage.py flush  (慎用!!)

创建超级管理员:python manage.py createsuperuser

然后输入用户名,邮箱(可不输),密码

下面这个呢,一般用不到,但是用到了,可以省时省力:

当数据库里面已经有表了,如何反向生成models呢??

python manage.py inspectdb >models

三,配置django

如果在django中新建了app,那么一定要在INSTALLED_APPS里面进行注册(Tip:这里会有很多人忘了加逗号。)

在STATIC_URL = ‘static‘’’的下方添加上STATICFILES_DIRS = ( os.path.join(BASE_DIR,'static'),)    (Tip:逗号不要再忘了)

四,视图函数的应用:

from django.shortcuts import render,HttpResponse,redirect

#coding:utf-8
# 第一行是声明编码方式,防止遇到中文出错。
from django.http import HttpResponse
def index(request):
return HttpResponse('天青色等烟雨')

这里要注意的是:views里面的视图函数第一个参数必须是request。

return不仅仅可以返回HttpResponse(返回字符串),也可以返回 render(request, 'index.html', context)  # (request是必须的,紧接着HTML的页面,context是附带的内容 ),

redirect('www.baidu.com')# redirect返回可以是一个完整的URL,可以是返回外部的网站,这里测试返回百度网站

五,urls的应用:

from django.urls import path, include

urlpatterns = [
path('add', views.add, name='add'),
path('ticket2', views.print_ticket2, name='print_ticket2'),
path('error', views.error_page, name='print_ticket'),
path('error2', include(health.urls)),
path(r'^add/(\d+)/(\d+)/$,views.add_num, name='add_num')
]

在这里提一句,urls里面的匹配用的是正则,还有name属性非常重要,直接关联到项目模板的编写!

为什么将name属性在django的urls配置中很重要呢?

path('add', views.add, name='add')

这个name=‘add’是用来干什么的呢?我们在开发的时候,刚开始想的是 /add/4/5/ ,后来需求变了,现在我们想改成/4_add_5/这种写法,但是在模板或者是代码里里面很多地方已经写成了之前的样式,那是不是需要从头改到尾,万一漏了一项,就不能用了对不对?

from django.core.urlresolvers import reverse
>>>reverse('add', args=(4,5))
'add/4/5/'

在模板里面一样的很方便:

# 不带参数的
{% url 'add' %}
# 带参数的,参数可以是变量名
{% url 'add' 4 5 %} <a href="{% url 'add' 4 5 %}">link</a>
最终渲染出来的结果是
<a href="/add/4/5/">link</a>

当现在要改变urls地址的时候,前提保持name不变,那么模板中网址也会动态的产生变化

url(r'^new_add/(\d+)/(\d+)/$', 'calc.views.add2', name='add'),

渲染出来的结果将会是:

 /new_add/4/5/

当然reverse也一样会动态的更新。

——————————————第一篇就讲到这里——————————————

Django的具体操作(一)的更多相关文章

  1. Django之Model操作

    Django之Model操作 本节内容 字段 字段参数 元信息 多表关系及参数 ORM操作 1. 字段 字段列表 AutoField(Field) - int自增列,必须填入参数 primary_ke ...

  2. Python之路【第二十二篇】:Django之Model操作

    Django之Model操作   一.字段 AutoField(Field) - int自增列,必须填入参数 primary_key=True BigAutoField(AutoField) - bi ...

  3. Django之ORM操作

    Django之ORM操作 前言 Django框架功能齐全自带数据库操作功能,本文主要介绍Django的ORM框架 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计 ...

  4. Django之ORM操作(聚合 分组、F Q)

    Django之ORM操作(聚合 分组.F Q) 聚合 aggregate()是QuerySet的一个终止子句,也就是说,他返回一个包含一些键值对的字典,在它的后面不可以再进行点(.)操作.   键的名 ...

  5. Python学习---Django的基础操作180116

    Django创建数据库操作 django流程之model实例 settigs.py:更改Django2.0.1的配置,更新为之前的路径配置 'DIRS': [os.path.join(BASE_DIR ...

  6. Django 2.0 学习(16):Django ORM 数据库操作(下)

    Django ORM数据库操作(下) 一.增加表记录 对于表单有两种方式: # 方式一:实例化对象就是一条表记录france_obj = models.Student(name="海地&qu ...

  7. Django 2.0 学习(14):Django ORM 数据库操作(上)

    Django ORM 数据库操作(上) ORM介绍 映射关系: 数据库表名 ---------->类名:数据库字段 ---------->类属性:数据库表一行数据 ----------&g ...

  8. Django与数据库操作

    Django与数据库操作 数据库连接的方法 web 框架 django --- 自己内部实现 (ORM) + pymysql(连接) Flask,tornado --- pymysql SQLArch ...

  9. Django ORM models操作

    title: Django ORM models操作 tags: Django --- Django ORM models操作 Django ORM基本操作 一.数据库的创建及增删改查 1 使用类创建 ...

  10. 使用Django.core.cache操作Memcached导致性能不稳定的分析过程

    使用Django.core.cache操作Memcached导致性能不稳定的分析过程 最近测试一项目,用到了Nginx缓存服务,那可真是快啊!2Gb带宽都轻易耗尽. 不过Api接口无法简单使用Ngin ...

随机推荐

  1. jsfl 常用自定义方法

    //创建文件夹 function creatFile(fileURl) { if (FLfile.createFolder(fileURl)) { //alert("创建成功 "+ ...

  2. R-CNN 学习记录

    CNN是一个运用卷积神经网络进行图片分类的开山之作.RCNN是第一个把图片分类和目标检测连接起来的作品. RCNN主要解决的问题是: 1.怎样用深度神经网络进行目标定位:2.怎样用小批量的标注数据来训 ...

  3. pycharm 对数据库进行可视化操作

    https://blog.csdn.net/qq_24189933/article/details/75666243

  4. ubuntu 使用命令行登录oracle

    1.检查环境变量设置 echo $ORACLE_HOME 2.配置oracle数据库信息,将oracle地址端口等信息放在$ORACLE_HOME/network/admin目录下的tnsnames. ...

  5. Activity生命周期,切换,参数传递,bundle(包),值对象,Activity参数返回,Activity的启动模式

    Activity代表手机屏幕的一屏,或是平板电脑中的一个窗口.它是android应用中最重要的组成单元之一,提供了和用户交互的可视化界面.在一个Activity中,可以添加很多组件,这些组件负责具体的 ...

  6. 高德地图 API 计算两个城市之间的距离

    1. 目前在项目中,遇到一个需求不会做,就是要计算两个城市之间的距离,而这两个城市的输入是可变的,如果要使用数据库来先存储两地之间的距离,调用的时候再来调用,那么存数据的时候,要哭的,因为光是省级区域 ...

  7. NetStream 记录

    bufferLength : Number [只读] 数据当前存在于缓冲区中的秒数.(已进入缓冲区的秒数) bufferTime : Number 指定在开始显示流之前需要多长时间将消息存入缓冲区.( ...

  8. [ SHELL编程 ] echo和printf使用实例

    本文主要描述Linux系统中echo和printf命令的使用方法,包括命令参数的含义.使用技巧. 1.echo    了解一个命令我们首先要知道它能做什么,它有哪些参数,参数的含义,可以实现我们哪方面 ...

  9. ASP.NET 分页+组合查询 练习

    分页和组合查询都是通过拼接SQL语句到数据库查询进行实现 到汽车表(car)中查询 ,汽车表选取了“编号 code”,“车名 name”,“日期 time”,“油耗 oil ”,“马力 powers” ...

  10. java 开学第四周

    package english; import java.io.File; import java.util.Scanner; import java.io.FileNotFoundException ...