首页 > 其他分享 >1、【django5笔记】 基础知识与逻辑

1、【django5笔记】 基础知识与逻辑

时间:2024-08-09 17:28:38浏览次数:7  
标签:models django5 py request 视图 django 笔记 基础知识 my

系统:  ubunt 22.04.4 LTS   1、确保python版本为3.10以上     python3 -V   2、创建虚拟环境     python3 -m venv test_venv   cd test_venv   source bin/activate # 进入虚环境   pip -V # 确认虚环境下pip可用   3、安装django     python -m pip install --upgrade pip   pip install django   4、创建django项目     django-admin help # 可以查看管理工具的用法   djang-admin startproject test_project  # 创建django项目test_project   5、创建应用     这将会创建一个基本的应用结构,包括models.py、views.py和urls.py等文件     cd test_project     django-admin startapp test_app       # vim setting,与项目的安全和功能相关       INSTALLED_APPS中添加 "test_app"     DEBUG = TRUE # 开发环境可以使用调试模式,生产环境建议置为FALSE     ALLOW_HOSTS = [] # 添加白名单     MIDDLEWARE = […] # 默认中间件,可不调整     TEMPLATES = […] # 模板     DATABASES = {} # 数据库连接设置,包含指定引擎     STATIC_URL = 'static/' # 静态资源指定     补充释义:       # 静态文件的 URL 路径        STATIC_URL = '/static/'          # “/static/”是域名的根路径下,为绝对路径;“static/” 为相对路径,       # 例如:在某个特定的路径下(比如 http://example.com/somepath/)使用 {% static %} 模板标签,那么静态文件将会通过 http://example.com/somepath/static/ 来访问       #       # 静态文件的文件系统路径        STATICFILES_DIRS = [          BASE_DIR / "static", # 这将对应项目根目录下的 static 文件夹          # 如果有其他应用特定的静态文件目录,也可以在这里添加          # 例如:BASE_DIR / "my_app" / "static",       ]        # 当你运行 python manage.py collectstatic 命令时, 所有静态文件都会被收集到这个目录下        STATIC_ROOT = BASE_DIR / "staticfiles" # 用于生产环境         DEFAULT_AUTO_FIELD = '…'     # vim views.py # 配置视图       将需要执行的操作渲染成UI界面       使用步骤:     1. 导入所需的模块和模型     首先,你需要导入 Django 视图相关的模块(包含自定义模块)以及可能需要处理的数据模型(包含自定义模型)。     # eg:

查看代码
 from django.http import HttpResponse
from .models import MyModel
    2. 定义视图函数:         2.1 定义一个简单的视图函数,它接受一个 HttpRequest 对象作为参数,并返回一个 HttpResponse 对象。       # eg:
查看代码
def my_view(request):
    # 视图逻辑
    return HttpResponse("Hello, world!")
      2.2 通常,你会使用 render 函数来渲染一个模板,并将上下文数据传递给它。         # eg:  
查看代码
from django.shortcuts import render


def my_view(request):
    context = {'message': 'Hello, world!'}
    return render(request, 'my_template.html', context)

# 这里,my_template.html 是模板的文件名,context 是一个字典,包含了传递给模板的数据。
      2.3 如果你的视图需要处理表单数据,你可以这样做:         # eg:       
查看代码
from django.shortcuts import render, redirect


def my_form_view(request):
    if request.method == 'POST':
        # 处理表单数据
        form = MyForm(request.POST)
        if form.is_valid():
            # 处理表单数据
            form.save()
            return redirect('success_url')
    else:
        form = MyForm()
    return render(request, 'form_template.html', {'form': form})
      2.4 除了基于函数的视图,Django 还支持基于类的视图。         # eg:
查看代码
 from django.views.generic import ListView, DetailView

class MyListView(ListView):
    model = MyModel
    template_name = 'my_list_template.html'

class MyDetailView(DetailView):
    model = MyModel
    template_name = 'my_detail_template.html'
        2.5 示例         # eg:
查看代码
 from django.shortcuts import render, HttpResponse

def index(request):
    return HttpResponse("Welcome to the index page.")

def about(request):
    context = {'about_us': 'We are a Django tutorial website.'}
    return render(request, 'about.html', context)
    # vim urls.py  配置应用程序的URL路由,这决定了URL会指向哪个视图       将视图与URL进行绑定,实现UI交互       使用步骤:       在 urls.py 文件中为你的视图定义 URL 模式  
查看代码
 from django.urls import path
from . import views

urlpatterns = [
    path('my_view/', views.my_view, name='my_view'),
   # 参数分别为: 'URL',  '视图函数',  '视图名(即路由的最末端的字段)'
    # ... 其他 URL 模式
]
    # vim models.py  用于设置应用的模型       使用步骤:       1.定义模型       每个模型都是 django.db.models.Model 的一个子类。每个模型类都代表数据库中的一个表       # eg:
查看代码
 from django.db import models

class Author(models.Model):
    name = models.CharField(max_length=100)
    age = models.IntegerField()

class Book(models.Model):
    title = models.CharField(max_length=200)
    authors = models.ManyToManyField(Author)
    published_date = models.DateField()
    isbn = models.CharField(max_length=13)
    # 补充字段类型:       Django 提供了一系列字段类型,用于定义模型中的不同类型的字段:     • CharField: 字符串字段。     • IntegerField: 整数字段。     • DateField: 日期字段。     • DateTimeField: 日期和时间字段。     • ForeignKey: 外键,用于定义多对一关系。     • ManyToManyField: 多对多关系。     • BooleanField: 布尔字段。     ...       # 字段选项:       每个字段都可以接受一组选项,例如:     • max_length: 字段的最大长度。     • null: 是否允许为空。     • blank: 是否允许空白。     • default: 默认值       2. 元数据选项         在模型类中,你可以定义 Meta 内部类,用于设置模型级别的元数据:   # eg:
查看代码
 class Book(models.Model):
   # 字段定义...
   class Meta:
       db_table = 'my_books'  # 指定数据库表名
       ordering = ['title']  # 指定默认排序字段
      3.模型方法         可以在模型中定义自定义方法来执行与模型相关的操作:         # eg:
查看代码
 class Author(models.Model):
   # 字段定义...

   def get_books(self):
      return self.book_set.all()  # 获取所有相关书籍
      每定义一个模型后,都需要生成迁移文件:           python manage.py makemigrations  # 生成迁移文件:  新增模型后、启动应用前必须步骤         然后运行迁移:           python manage.py migrate  # 启动应用前必须步骤     6、运行应用迁移     启动应用前确保数据表已经创建,需要运行以下命令迁移       python manage.py migrate   7、创建用户     python manage.py createuser  # 按以下提示输入账号,及绑定邮箱(邮箱可随意书写)       # user:     # email:     # passwd:     # entry passwd:   8、启动服务     python manage.py runserver  # 默认8000端口,如需更换端口可另外采用nginx进行监听端口    

 

标签:models,django5,py,request,视图,django,笔记,基础知识,my
From: https://www.cnblogs.com/gaogaoing/p/18350735

相关文章

  • 机器学习笔记:编码器与解码器
    目录介绍组成结构代码实现编码器解码器合并编码器-解码器思考介绍在机器翻译中,输入的序列与输出的序列经常是长度不相等的序列,此时,像自然语言处理这种直接使用循环神经网络或是门控循环单元的方法就行不通了。因此,我们引入一个新的结构,称之为“编码器-解码器”(Enco......
  • Redis笔记
    Redis(Remotedictionaryserver)开源的基于内存的数据存储系统可用于数据库、缓存、队列等各种场景。支持key-value的储存形式,底层是用C语言编写的。基于key-value形式的数据字典,结构非常简单,没有数据表的概念,之间用键值对的形式完成数据的管理。SQL NoSQL数据结构结构......
  • 网课-组合数学学习笔记2
    插板法\(n\)个无标号物品分成\(m\)个有标号组。非空:\[\dbinom{n-1}{m-1}\]空:\[\dbinom{n+m-1}{m-1}\]构造一一对应的转化:现有两个集合\(A,B\)。如果所有\(A\)中的元素都能够映射到\(B\)中,则\(|A|\le|B|\);反之,如果\(B\)能映射到\(A\),则\(|B|\le|A|\)......
  • Linux源码阅读笔记20-PCI设备驱动详解
    PCI基础PCI总线为高性能局部总线,主要解决外部设备之间以及外部设备与主机之间高速数据传输。在数字图形、图像等处理,以及告诉实时数据采集与处理等队数据传输速率要求高的应用中,采用PCI总线进行数据传输。PCI规范能够实现32位并行数据传输,工作频率为33MHz或66MHz,最大吞吐率......
  • 开关电源设计学习笔记
    在学习开关电源设计之前,我们应该思考一下学习的初心和目标,初心是能在你想要放弃的时候坚持下去的动力,目标是怎样才能算完成了对于硬件的认识和学习,是对于学习成果的检验。我们所学的知识想要转化为技能和能力都需要在实践中进行的,所以,在学习中我们的目标设立在运用所学知识设......
  • Linux-USB驱动笔记-Gadget Function驱动
    1、前言在Linux-USB驱动笔记(四)–USB整体框架中有説到GadgetFunction驱动,下面我们来具体看一下。GadgetFunction就是指设备的功能,比如作为U盘,需要文件存储的功能,则需要FileStorage驱动,这个驱动也称为Function驱动。2、GadgetFunction驱动Function驱动只是利用通用的API,并......
  • C语言学习笔记 Day8(函数)
    Day8 内容梳理:目录Chapter6 函数6.0概述6.1 定义函数6.2 调用函数(1)实参&形参(2)调用无参函数(3)调用有参函数6.3 声明函数6.4 终止函数(exit&return)6.5多文件编程(1)设置主文件(2)创建头文件(3)导入头文件Chapter6 函数6.0概述函数的分类(2种):   ......
  • 计算机网络考研手写笔记_物理层
    1通信基础概念1)信源、信宿、信号、信道2)码元3)速率4)噪声2编码和调制3数据转为信号4传输介质1)导向型(双绞线、同轴电缆、光纤)2)非导向型(无线电波、微波通信)3)物理层接口的特性(机械、电气、功能、过程)5物理层设备1)中继器2)集线器......
  • Linux-USB驱动笔记--设备控制器(UDC)驱动
    1、前言在Linux-USB驱动笔记(四)–USB整体框架中有説到设备侧的设备控制器(UDC),下面我们来具体看一下。2、设备控制器(UDC)USB设备控制器(UDC)驱动指的是作为其他USB主机控制器的USB硬件设备上的底层控制器驱动。该硬件和驱动负责将一个USB设备依附于一个USB主机控制器上。UDC驱......
  • 做题笔记(二)
    [CSP-S2023]消消乐题目传送门[CSP-S2023]消消乐思路考虑DP。显然,设\(f_i\)表示以位置\(i\)结尾的可消除序列的个数,我们对每一个可消除序列考虑模型,大概就是这个样子:\(\text{a}\cdots\text{ab}\cdots\text{b}\)。那么我们当前位置为\(i\),前一个可以与\(i\)匹配的......