热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Django基础001

一、开发模式MVC模式:model:数据库view:前端展示controller:逻辑控制MTV模式model:数据库view:逻辑控制template:前端展示二、D

一、开发模式

MVC模式:
model:数据库
view:前端展示
controller:逻辑控制
MTV模式
model:数据库
view:逻辑控制
template:前端展示


二、Django介绍

flask,FastApi是轻量级服务端开发框架

Django是重量级服务端开发框架

ORM:封装了数据库操作

form:校验请求数据

安装Django:

pip install django==2.1   #指定版本安装,默认是安装最新版本

注意:最新版本的Django对mysql版本也有要求


三、Django命令

1.创建项目命令:django-admin startproject ssz_django

2.启动项目命令:

  python manage.py runserver  默认端口启动8000

  python manage.py runserver  0.0.0.0:8002   指定端口启动,别人也可以访问

  python manage.py runserver  127.0.0.1:8002 指定端口启动,只能自己访问

3.创建子模块:python manage.py startapp user

4.创建表结构:

  python manage.py makemigrations

  python manage.py migrate

5.查询命令

  python manage.py --help


四、pycharm操作


4.1 pycharm创建项目

File--New Project--Django

技术图片


4.2 pycharm创建子模块

Tools--Run manage.py Task 进入命令行

startapp user  #创建user子模块


五、Django项目介绍


5.1 项目整体结构

技术图片


5.2 urls.py

该文件是用来配置url的


1 from django.contrib import admin
2 from django.urls import path
3 from user import views #引入模块
4
5 urlpatterns = [
6 path(admin/, admin.site.urls),
7 path(index/, views.user_info),
8 path(welcome/,views.welcome),
9 path(‘‘,views.index),#配置url
10 ]


5.3 settings.py

该文件是配置文件,数据库等配置


1 import os
2
3 # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
4 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
5
6
7 # Quick-start development settings - unsuitable for production
8 # See https://docs.djangoproject.com/en/2.1/howto/deployment/checklist/
9
10 # SECURITY WARNING: keep the secret key used in production secret!
11 SECRET_KEY = 6ui+975ck&h4o8f9ga!lnz%j7u&se&-%69&-(h(4!-q4n80y9c
12
13 # SECURITY WARNING: don‘t run with debug turned on in production!
14 DEBUG = True
15
16 ALLOWED_HOSTS = []
17
18
19 # Application definition
20
21 INSTALLED_APPS = [ #加增加的应用
22 django.contrib.admin,
23 django.contrib.auth,
24 django.contrib.contenttypes,
25 django.contrib.sessions,
26 django.contrib.messages,
27 django.contrib.staticfiles,
28 user,
29 test_tools,
30 case
31 ]
32
33 MIDDLEWARE = [
34 django.middleware.security.SecurityMiddleware,
35 django.contrib.sessions.middleware.SessionMiddleware,
36 django.middleware.common.CommonMiddleware,
37 django.middleware.csrf.CsrfViewMiddleware,
38 django.contrib.auth.middleware.AuthenticationMiddleware,
39 django.contrib.messages.middleware.MessageMiddleware,
40 django.middleware.clickjacking.XFrameOptionsMiddleware,
41 ]
42
43 ROOT_URLCOnF= sky.urls
44
45 TEMPLATES = [
46 {
47 BACKEND: django.template.backends.django.DjangoTemplates,
48 DIRS: [os.path.join(BASE_DIR,templates)],#指的是Django寻找html的目录
49 APP_DIRS: True,
50 OPTIONS: {
51 context_processors: [
52 django.template.context_processors.debug,
53 django.template.context_processors.request,
54 django.contrib.auth.context_processors.auth,
55 django.contrib.messages.context_processors.messages,
56 ],
57 },
58 },
59 ]
60
61 WSGI_APPLICATION = sky.wsgi.application
62
63
64 # Database
65 # https://docs.djangoproject.com/en/2.1/ref/settings/#databases
66
67 DATABASES = {
68 default: {
69 ENGINE: django.db.backends.sqlite3,
70 NAME: os.path.join(BASE_DIR, db.sqlite3),
71 }
72 }
73
74
75 # Password validation
76 # https://docs.djangoproject.com/en/2.1/ref/settings/#auth-password-validators
77
78 AUTH_PASSWORD_VALIDATORS = [
79 {
80 NAME: django.contrib.auth.password_validation.UserAttributeSimilarityValidator,
81 },
82 {
83 NAME: django.contrib.auth.password_validation.MinimumLengthValidator,
84 },
85 {
86 NAME: django.contrib.auth.password_validation.CommonPasswordValidator,
87 },
88 {
89 NAME: django.contrib.auth.password_validation.NumericPasswordValidator,
90 },
91 ]
92
93
94 # Internationalization
95 # https://docs.djangoproject.com/en/2.1/topics/i18n/
96
97 #LANGUAGE_CODE = ‘en-us‘ #英文
98 LANGUAGE_CODE = zh-Hans#中文
99
100 TIME_ZOnE= Asia/Shanghai#时区
101
102 USE_I18N = True
103
104 USE_L10N = True
105
106 USE_TZ = False#True:往数据库里插数据,用的标准时区的时间
107
108
109 # Static files (CSS, Javascript, Images)
110 # https://docs.djangoproject.com/en/2.1/howto/static-files/
111
112 STATIC_URL = /static/
113
114 STATICFILES_DIRS = (
115 os.path.join(BASE_DIR,static),
116 )
117
118 MEDIA_ROOT = os.path.join(BASE_DIR,images)#图片的总目录
119 MEDIA_URL = /images/


5.4 wsgj.py

该文件是用来部署用的


5.5 manage.py

项目管理文件


5.6 models.py

操作数据库文件

建单表代码


1 from django.db import models
2
3 # Create your models here.
4 class Category(models.Model):
5 name = models.CharField(verbose_name=分类名称,max_length=20,unique=True)
6 create_time = models.DateTimeField(verbose_name=创建时间,auto_now_add=True)
7 update_time = models.DateTimeField(verbose_name=修改时间,auto_now=True)
8 class Meta:
9 db_table = category #指定表名
10 verbose_name = 分类
11 verbose_name_plural = verbose_name
12 ordering = [-create_time,name] #排序,默认是升序,-是降序

建有外键的表的代码


1 class Article(models.Model):
2 title = models.CharField(verbose_name=标题,max_length=50)
3 cOntent= models.TextField(verbose_name=文章内容)
4 category = models.ForeignKey(Category,on_delete=models.DO_NOTHING,db_cOnstraint=False,verbose_name=分类)
5 #建外键,on_delete=models.DO_NOTHING:当分类被删除时,文章不被影响
6 #db_cOnstraint= False:不会在表中建立真实的外键关系
7
8 img = models.ImageField(upload_to=article,verbose_name=文章图片,blank=True)#图片存放的文件夹
9 create_time = models.DateTimeField(verbose_name=创建时间, auto_now_add=True)
10 update_time = models.DateTimeField(verbose_name=修改时间, auto_now=True)
11 class Meta:
12 db_table = article #指定表名
13 verbose_name = 文章
14 verbose_name_plural = verbose_name
15 ordering = [-create_time] #排序,默认是升序,-是降序

代码写好后,分别执行以下命令,就可以生成表结构

 python manage.py makemigrations

 python manage.py migrate

Django 内嵌了sqllite,默认就是将表创建在sqllite中

如果想要连接mysql等其他数据库,需要自己在settings.py文件中配置

关联删除模式:


#外键删除操作模式
#models.DO_NOTHING:不受任何影响
#models.CASCADE:关联的数据也会被删除,分类被删除,引用分类的文章也会被删除
#models.SET:传入一个方法名,用方法返回值
#models.SET_DEFAULT:删除了,设置为默认值,要该字段有默认值
#models.SET_NULL:删除了,直接设置为空,要该字段可为空
#models.PROTECT#受保护,不能删除,只要这个分类下有文章,就不能删除这个分类


5.7 views.py

是用来做逻辑处理的文件


1 from django.http import HttpResponse
2 from django.shortcuts import render
3 from . import models
4
5 # Create your views here.
6
7 def user_info(request):
8 s = 你好
9 return HttpResponse(s)#返回的是字符串
10
11
12 def welcome(request):
13 username = 谢谢啦dddd
14 # f = open(‘G:\\pythonWorkspace\\day018\\sky\\templates\\welcome.html‘,encoding=‘utf-8‘)
15 # cOntent= f.read()
16 # new_cOntent= content.replace(‘{{ uname }}‘,username)
17 # return HttpResponse(new_content)
18 # render 就等于上面的一系列操作
19 return render(request,welcome.html,{uname:username})
20
21
22 def index(request):
23 categories = models.Category.objects.all()
24 articles = models.Article.objects.all()
25 return render(request,index.html,{categories:categories,articles:articles})


5.8 ORM操作数据库


5.8.1 增加


1 #第一种方式:增加
2 category = models.Category(name=mysql)
3 category.save()
4
5 #第二种方式:增加
6 models.Category.objects.create(name=心情日记)


5.8.2 修改


1 #修改
2 c1 = models.Category.objects.get(id=1)
3 c1.name = Java
4 c1.save()#单个数据修改
5
6 #多个数据修改
7 q = models.Category.objects.filter(name=python)
8 q.update(name=Python1)


5.8.3 查询


1 #查询
2 #只能返回一条数据,如果返回多条数据会报错
3 #如果指定的条件查询不到数据,也会报错
4 c1 = models.Category.objects.get(name=linux,id=2)
5
6 #可以返回多条数据,返回结果为list,如果查询不到结果,则返回空
7 query_set = models.Category.objects.filter(name=python,id=8)
8 print(query_set.first().name)
9 print(query_set[1])
10 print(query_set)
11
12 #查询所有的数据
13 categories = models.Category.objects.all()


5.8.4 删除


1 #删除
2 #单条数据删除
3 c1 = models.Category.objects.get(id=1)
4 c1.delete()
5
6 #多条数据删除
7 q = models.Category.objects.filter(name=Python1)
8 q.delete()

 

Django基础-001



推荐阅读
  • iOS之富文本
    之前做项目时遇到一个问题:使用UITextView显示一段电影的简介,由于字数比较多,所以字体设置的很小,行间距和段间距也很小,一大段文字挤在一起看起来很别扭,想要把行间距调大,结 ... [详细]
  • MyBatis模糊查询和多条件查询一、ISmbmsUserDao层根据姓名模糊查询publicListgetUser();多条件查询publicList ... [详细]
  • vscode里的html标签导航的一系列问题
    哈喽,我今天带来的经验是,vscode在18年10月更新后的1.29以后,编辑html文档时,会发现最上面有个类似于HTML标签导航的玩意儿,可能部分同学和我一样不习惯用它们,现在 ... [详细]
  • Illustrator绘制逼真的愤怒的小鸟实例教程
    Illustrator教程: ... [详细]
  • 抓取百万知乎用户设计之实体设计
    一.实体的关系实体是根据返回的Json数据来设计的教育经历方面用户可以有很多教育经理,USER和education是一对多的关系,一个education对应一个education一 ... [详细]
  • Xib九宫格应用管理使用xib封装一个自定义view的步骤1新建一个继承UIView的自定义view,假设类名叫做(AppView)2新建一个AppView.xib文件来描述 ... [详细]
  • 【自制小工具】代码生成器
    【自制小工具】代码生成器陆陆续续接触过好几款代码生成工具,发现确实好用,但都会有那么点不完善的地方,所以索性就自己做一个吧。界面非常简单,反正是自己用的,简单点用起来也方便上图:左 ... [详细]
  • kepserver中文手册,kepserver使用教程,kepserver设置
    下面介绍一下KepServer模拟器的使用,以下示例使用服务器随附的Simulator驱动程序来演示创建、配置和运行项目的过程。Simulator驱动程序是基于内存的驱动程序,能为 ... [详细]
  • 论文阅读及复现 | Improved Semantic Representations From TreeStructured Long ShortTerm Memory Networks
    两种形式的LSTM变体Child-SumTree-LSTMsN-aryTree-LSTMshttps:paperswithcode.compaperimproved-semanti ... [详细]
  • 看这里,教你如何快速将pdf文件翻译成中文
    因为网上下载的PDF资料,往往掺杂着一些英文,所以中英文翻译是一件很平常的事,毕竟不是每个人的英文都那么好,轻轻松松的就能够看完一篇英文的文件,那么,我们就要寻找翻译工具来帮助我们 ... [详细]
  • 以SOA服务为导向的信息系统构建是通过有计划地构建信息系统时,一种简单而有柔性的方法,就是组件化与服务导向架构。过去的信息系统,是在使用者需要新功能时才开发的,也就是响应不同时 ... [详细]
  • 简单动态字符串redis里面很多地方都用到了字符串,我们知道redis是一个键值对存储的非关系型数据库,那么所有的key都是用字符串存储的,还有字符串类型,这些都是用字符串存储的 ... [详细]
  • 例子如Table表有性别字段,1代表男2代表女、3代表中性、还有没填就代表未说明selectid,decode(sex,'1','男', ... [详细]
  • 接口测试的方式有很多,比如可以用工具(jmeter,postman)之类,也可以自己写代码进行接口测试,工具的使用相对来说都比较简单,重点是要搞清楚项目接口的协议是什么,然后有针对 ... [详细]
  • C#的Type对象的简单应用
    通过Type对象可以获取类中所有的公有成员直接贴代码:classMyClass{privatestringname;privateintid;publicstringcity;pu ... [详细]
author-avatar
651404449_724afc
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有