Django框架之Django小白必会三板斧

一、引言

Django项目如何添加新功能?

在之前的文章中,我们学会了对web框架的封装优化处理,其中的urls.py和views.py尤为重要

(1)添加URL映射

  • 在项目的 urls.py 文件中,通过导入相应的应用(app)及其视图函数,并使用 path()include() 函数来定义 URL 映射规则。
  • 例如,如果要在名为 “myapp” 的应用中添加一个用于显示博客文章列表的 URL,则可以在 urlpatterns 中添加如下配置
from django.urls import path
from . import views

urlpatterns = [
    path('blog/', views.blog_list, name='blog_list'),
]
  • 这将把 “/blog/” 映射到 views.blog_list 视图函数。

(2)添加视图函数

  • 然后,在对应的 “myapp/views.py” 文件中,创建视图函数以处理 HTTP 请求。
  • 例如,blog_list 可能如下实现:
from django.shortcuts import render
from .models import BlogPost

def blog_list(request):
    posts = BlogPost.objects.all()
    return render(request, 'myapp/blog_list.html', {'posts': posts})
  • 这里假设有一个名为 “BlogPost” 的模型,并有一个包含模板 blog_list.html 的对应 HTML 模板文件。

而在html文件中我们仍需要学习三个最基础也最重要的类。接下来我们会一一叙说

二、小白必会三板斧

1、HttpResponse

HttpResponse是Django中用于返回HTTP响应的类。通过使用HttpResponse类,你可以向客户端发送包含特定内容的HTTP响应。以下是关于HttpResponse的一些基本信息:

  1. 创建HttpResponse对象

    • 要创建一个HttpResponse对象,你可以使用以下方法:
      from django.http import HttpResponse
      
      def my_view(request):
          # 创建一个包含特定内容的HttpResponse对象
          response = HttpResponse("Hello, World!")
          return response
      
  2. 设置响应内容

    • 你可以通过传递一个字符串作为参数来设置响应内容。这个字符串可以包含HTML、JSON等内容。
    • 例如,HttpResponse("Hello, World!")会返回一个包含"Hello, World!"文本的HTTP响应。
  3. 设置响应状态码

    • 你可以通过在实例化HttpResponse对象时传递status参数来设置响应的状态码。
    • 例如,HttpResponse("Page not found", status=404)会返回一个包含"Page not found"文本的HTTP响应,并将状态码设置为404(页面未找到)。
  4. 设置响应头

    • 除了设置内容和状态码外,你还可以设置响应头。可以通过在实例化HttpResponse对象后,通过调用response['Header-Name'] = 'value'来设置响应头。
  5. 返回HttpResponse对象

    • 在视图函数中,最后要返回HttpResponse对象,以便Django能够将其发送给客户端。
    • 例如,return HttpResponse("Hello, World!")会将包含"Hello, World!"文本的HTTP响应发送给客户端。

HttpResponse是Django中常用的类之一,用于处理HTTP请求并返回相应的内容。

2、render

render是Django中一个常用的快捷函数,用于将数据渲染到指定的模板中,并返回一个包含渲染内容的HttpResponse对象。render函数通常用于将动态生成的数据呈现给用户,结合HTML模板来构建最终的页面。

下面是关于render函数的一些基本信息:

  1. 使用方法

    • 首先,确保在视图函数中导入render函数:
      from django.shortcuts import render
      
    • 然后,使用render函数将数据渲染到指定的模板中:
      def my_view(request):
          data = {'key': 'value'}  # 要传递给模板的数据
          return render(request, 'template_name.html', data)
      
  2. 参数说明

    • request:HTTP请求对象,通常是视图函数的第一个参数。
    • 'template_name.html':要渲染的模板文件的名称。
    • data:要传递给模板的数据,通常是一个字典,包含需要在模板中显示的变量和数值。
  3. 模板渲染

    • 在模板中,你可以通过使用模板语言(Django模板引擎)来访问传递的数据,并将其动态显示在页面上。
    • 例如,在模板中使用{{ key }}来显示传递的数据值。
  4. 返回响应

    • render函数将渲染后的内容包装在HttpResponse对象中并返回给客户端。
    • 它简化了将数据与HTML模板结合的过程,并提供了一种方便的方式来生成动态内容。

使用render函数可以更轻松地将数据传递给模板,并生成最终的页面内容,这在开发Web应用程序时非常有用。

3、redirect

redirect是Django中的一个快捷函数,用于将用户重定向到指定的URL。当视图函数需要将用户重定向到另一个页面时,可以使用redirect函数。

下面是一个简单的示例,演示如何在Django视图函数中使用redirect函数:

from django.shortcuts import redirect

def my_view(request):
    # 一些逻辑处理...
    if 条件满足:
        return redirect('目标URL')   # 重定向自己的函数不用写前缀
    else:
        return redirect('另一个URL')

在上面的示例中,根据特定条件,如果条件满足,则用户将被重定向到目标URL,否则将被重定向到另一个URLredirect函数接受一个URL作为参数,并返回一个HttpResponseRedirect对象,将用户重定向到指定的URL。

三、Django便捷函数

想要深入了解的可以点击官方链接

在Django中,便捷函数(shortcut functions)是一组简单而方便的函数,用于执行常见的任务,如渲染模板、重定向用户、返回JSON响应等。这些函数位于django.shortcuts模块中,并提供了一种简洁的方式来处理常见的任务,而无需编写大量的代码。

以下是一些常用的Django便捷函数的详细介绍:

  1. render函数:

    • 功能:将数据渲染到指定的模板中,并返回一个包含渲染内容的HttpResponse对象。
    • 用法:通常用于将动态内容呈现给用户,例如将数据库中的数据传递给模板进行渲染。
    • 示例
      from django.shortcuts import render
      
      def my_view(request):
          context = {'name': 'Alice', 'age': 30}
          return render(request, 'my_template.html', context)
      
  2. redirect函数:

    • 功能:将用户重定向到指定的URL。
    • 用法:常用于处理表单提交后的重定向或其他页面跳转需求。
    • 示例
      from django.shortcuts import redirect
      
      def my_view(request):
          # some logic here
          return redirect('/new_url/')
      
  3. get_object_or_404函数:

    • 功能:获取数据库中的单个对象,如果对象不存在,则引发Http404异常。
    • 用法:用于获取特定对象,如果对象不存在,则返回404错误页面。
    • 示例
      from django.shortcuts import get_object_or_404
      from myapp.models import MyModel
      
      def my_view(request, id):
          obj = get_object_or_404(MyModel, pk=id)
          return render(request, 'my_template.html', {'object': obj})
      
  4. Http404异常:

    • 功能:引发HTTP 404错误,用于指示请求的资源不存在。
    • 用法:通常与get_object_or_404等函数一起使用,以处理对象不存在的情况。
    • 示例
      from django.http import Http404
      
      def my_view(request, id):
          if not object_exists:
              raise Http404("Object does not exist")
      
  5. get_list_or_404函数:

    • 功能:获取数据库中的对象列表,如果列表为空,则引发Http404异常。
    • 用法:类似于get_object_or_404,但用于获取对象列表。
    • 示例
      from django.shortcuts import get_list_or_404
      from myapp.models import MyModel
      
      def my_view(request):
          objects = get_list_or_404(MyModel, some_filter=True)
          return render(request, 'my_template.html', {'objects': objects})
      

这些便捷函数在Django开发中非常有用,可以帮助简化代码、提高开发效率,并确保代码的可读性和可维护性。

四、补充

1、django自带重启功能

  • 当识别到项目中代码有变化之后 隔段时间会自动重启 但是有时候较慢
  • 这也就是我们经常看见运行结果的窗口中不断刷新的现象

2、默认返回临时重定向

  • 默认情况下,redirect() 返回临时重定向。
  • 所有以上形式都接受 permanent 参数;如果设置为 True 会返回一个永久重定向:
def my_view(request):
    ...
    obj = MyModel.objects.get(...)
    return redirect(obj, permanent=True)

3、临时重定向和永久重定向的区别

  • 临时重定向(响应状态码:302)和永久重定向(响应状态码:301)对普通用户来说是没什么区别的,它主要面向的是搜索引擎的机器人。
    • A页面临时重定向到B页面,那搜索引擎收录的就是A页面。
    • A页面永久重定向到B页面,那搜索引擎收录的就是B页面。
  • 21
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值