首页 > 其他分享 >django二

django二

时间:2024-08-20 20:04:51浏览次数:7  
标签:name runoob py django Test path

Django 模型

Django ORM

settings.py 文件中找到 DATABASES 配置项

DATABASES = { 
  'default':
  {
      'ENGINE': 'django.db.backends.mysql',   # 数据库引擎
      'NAME': 'runoob', # 数据库名称
      'HOST': '127.0.0.1', # 数据库地址,本机 ip 地址 127.0.0.1
      'PORT': 3306, # 端口
      'USER': 'root', # 数据库用户名
      'PASSWORD': '123456', # 数据库密码
  }  
}

告诉 Django 使用 pymysql 模块连接 mysql 数据库:

 在与 settings.py 同级目录下的 __init__.py 中引入模块和进行配置
import pymysql
pymysql.install_as_MySQLdb()

 

定义模型

创建 APP

Django 规定,如果要使用模型,必须要创建一个 app。我们使用以下命令创建一个 TestModel 的 app:

django-admin startapp TestModel

TestModel/models.py 定义model

# models.py
from django.db import models

class Test(models.Model):
  name = models.CharField(max_length=20)
  class Meta: # 定义一些元素据,比如表名等
    db_table = 'users'

以上的类名代表了数据库表名,且继承了models.Model,类里面的字段代表数据表中的字段(name),数据类型则由CharField(相当于varchar)、DateField(相当于datetime), max_length 参数限定长度。

接下来在 settings.py 中找到INSTALLED_APPS这一项 TestModel

HelloWorld 目录中添加 testdb.py 文件(下面介绍),并修改 urls.py

# HelloWorld/HelloWorld/testdb.py: 文件代码:

# -*- coding: utf-8 -*-

from django.http import HttpResponse

from TestModel.models import Test

# 数据库操作
def testdb(request):
  test1 = Test(name='runoob')
  test1.save()
  return HttpResponse("<p>数据添加成功!</p>")

 

# HelloWorld/HelloWorld/urls.py: 文件代码:

from django.urls import path

from . import views,testdb

urlpatterns = [
  path('runoob/', views.runoob),
  path('testdb/', testdb.testdb),
]

获取数据

# -*- coding: utf-8 -*-

from django.http import HttpResponse

from TestModel.models import Test

# 数据库操作
def testdb(request):
  # 初始化
  response = ""
  response1 = ""
   
   
  # 通过objects这个模型管理器的all()获得所有数据行,相当于SQL中的SELECT * FROM
  listTest = Test.objects.all()
       
  # filter相当于SQL中的WHERE,可设置条件过滤结果
  response2 = Test.objects.filter(id=1)
   
  # 获取单个对象
  response3 = Test.objects.get(id=1)
   
  # 限制返回的数据 相当于 SQL 中的 OFFSET 0 LIMIT 2;
  Test.objects.order_by('name')[0:2]
   
  #数据排序
  Test.objects.order_by("id")
   
  # 上面的方法可以连锁使用
  Test.objects.filter(name="runoob").order_by("id")
   
  # 输出所有数据
  for var in listTest:
      response1 += var.name + " "
  response = response1
  return HttpResponse("<p>" + response + "</p>")

表单

https://www.runoob.com/django/django-form.html

 

视图

Request 对象

每个视图函数的第一个参数是一个 HttpRequest 对象,HttpRequest对象包含当前请求URL的一些信息:

path,method,GET(包含所有HTTP GET参数的类字典对象),POST(包含所有HTTP POST参数的类字典对象)...

QueryDict对象

在HttpRequest对象中, GET和POST属性是django.http.QueryDict类的实例。

QueryDict类似字典的自定义类,用来处理单键对应多值的情况。

QueryDict实现所有标准的词典方法。还包括一些特有的方法

def runoob(request):
  name = request.GET.get("name")
  return HttpResponse('姓名:{}'.format(name))
   
def runoob(request):
  name = request.POST.get("name")
  return HttpResponse('姓名:{}'.format(name))

响应对象:HttpResponse 对象

响应对象主要有三种形式:HttpResponse()、render()、redirect()。

HttpResponse(): 返回文本,参数为字符串,字符串中写文本内容。如果参数为字符串里含有 html 标签,也可以渲染

render(): 返回文本,第一个参数为 request,第二个参数为字符串(页面名称),第三个参数为字典(可选参数,向页面传递的参数:键为页面参数名,值为views参数名)

redirect():重定向,跳转新页面。参数为字符串,字符串中填写页面路径。一般用于 form 表单提交后,跳转到新页面。

提示CSRF报错

注释 settings.py中 'django.middleware.csrf.CsrfViewMiddleware',

路由

Django 路由在 urls.py 配置,urls.py 中的每一条配置对应相应的处理方法。

  • path:用于普通路径,不需要自己手动添加正则首位限制符号,底层已经添加。

  • re_path:用于正则路径,需要自己手动添加正则首位限制符号。

from django.urls import re_path # 用re_path 需要引入 
urlpatterns = [
  path('admin/', admin.site.urls),
  path('index/', views.index), # 普通路径
  re_path(r'^articles/([0-9]{4})/$', views.articles), # 正则路径
]

https://www.runoob.com/django/django-routers.html

Django Admin 管理工具

Django 提供了基于 web 的管理工具。

Django 自动管理工具是 django.contrib 的一部分。你可以在项目的 settings.py 中的 INSTALLED_APPS 看到它:

INSTALLED_APPS = (
  'django.contrib.admin',
  'django.contrib.auth',
  'django.contrib.contenttypes',
  'django.contrib.sessions',
  'django.contrib.messages',
  'django.contrib.staticfiles',
)

https://www.runoob.com/django/django-admin-manage-tool.html

标签:name,runoob,py,django,Test,path
From: https://www.cnblogs.com/yjh1995/p/18370222

相关文章

  • django三
    不同环境配置https://blog.csdn.net/happylee524/article/details/104067973pythonyour_project/manage.pyrunserver0.0.0.0:8000--settings=your_project.settings.set_dev低版本MySQL启动必须注释源码(django高版本不支持Mysql低版本)django\db\backends\base\base.py#s......
  • Django:关联查询
    一、数据准备1、创建应用books2、setting.py中注册应用3、定义模型类fromdjango.dbimportmodels#Createyourmodelshere.#定义图书模型类BookclassBook(models.Model):title=models.CharField(max_length=20,verbose_name='图书名称')read=model......
  • Django:聚合函数
    作用:对查询结果进行聚合操作(等同数据库的聚合函数)函数作用sum求和count计数avg平均值max最大值min最小值1.直接使用直接使用聚合函数查询返回值是一个数字计数:count#统计id大于3的新闻类别数TypeInfo.objects.count()求和:所有新闻的阅读总......
  • 计算机毕业设计Python深度学习游戏推荐系统 Django PySpark游戏可视化 游戏数据分析
    基于Spark的TapTap游戏数据分析系统技术栈:  -python  -django  -scrapy  -vue3  -spark  -element-plus  -echarts   功能板块:0.爬虫模块:  通过scrapy抓取taptap游戏网站数据,从分类页开始抓取全站游戏的数据1.首页......
  • Django:F对象和Q对象
    一、F对象之前的查询都是对象的属性与常量值比较,两个属性怎么比较呢?作用:用于类属性之间的比较#使用之前需要先导入fromdjango.db.modelsimportF#查询阅读量大于等于评论量的新闻NewsInfo.objects.filter(read__gte=F('comment'))可以在F对象上使用算数运算#查......
  • Django:查询基础语法
    一、数据准备1、在models.py中定义一个新闻和新闻类型的模型类classNewsInfo(models.Model):"""新闻表"""title=models.CharField(max_length=100,help_text='新闻标题',verbose_name='新闻标题',blank=True,default='')content=m......
  • 高校爬虫可视化系统-基于python|Django|flask的高校爬虫可视化系统|大学数据抓取与展
    博主介绍:✌十余年IT大项目实战经验、在某机构培训学员上千名、专注于本行业领域✌技术范围:Java实战项目、Python实战项目、微信小程序/安卓实战项目、爬虫+大数据实战项目、Nodejs实战项目、PHP实战项目、.NET实战项目、Golang实战项目。主要内容:系统功能设计、开题报告......
  • 基于django+vue框架的实时新闻推送平台edpjq【开题报告+程序+论文】计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在信息爆炸的时代,新闻资讯的时效性成为了媒体竞争的关键。随着互联网技术的飞速发展,人们获取新闻的方式已从传统的报纸、电视转向了手机、......
  • 基于django+vue框架的教学资源管理系统【开题报告+程序+论文】计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,教育领域正经历着前所未有的变革。传统的教学模式逐渐向数字化、网络化、智能化方向转型,教学资源管理系统作为教育......
  • 基于django+vue框架的动漫视频网站6ygmo【开题报告+程序+论文】计算机毕
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网的飞速发展和数字媒体技术的不断进步,动漫文化在全球范围内迅速普及,成为年轻人喜爱的文化形式之一。动漫视频网站作为传播动漫内......