【5.0】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 模板文件。

【二】三板斧(返回HTTP响应、渲染HTML和重定向)

【1】HttpResponse

  • HttpResponse: 这是 Django 自带的类,用于构建基本的 HTTP 响应。
  • 例如,当需要返回纯文本或 JSON 数据时,可以这样创建响应:
from django.http import HttpResponse
from django.utils import json

def some_view(request):
    data = {"key": "value"}
    response = HttpResponse(json.dumps(data), content_type="application/json")
    return response

【2】render

  • 主要用于返回html文件 并且支持模板语法(django自己写的)

  • render(): 这个函数用于从给定的模板加载内容,并将其插入到 HTTP 响应中作为 HTML 内容发送给客户端。

  • 例如,在上面的 blog_list 视图中,我们使用了它来返回带有博客文章列表的 HTML:

from django.shortcuts import render

def blog_list(request):
    posts = BlogPost.objects.all()
    context = {'posts': posts}
    return render(request, 'myapp/blog_list.html', context)

【3】redirect

  • 主要用于重定向 括号内可以写其他网站的全称 也可以自己网站的后缀

  • redirect(): 该函数用于向用户返回一个 HTTP "Redirect" 响应,使浏览器跳转至指定的 URL。

  • 例如,点击博客文章详情页链接时,可能用到如下代码:

from django.shortcuts import redirect
from .models import BlogPost

def blog_detail(request, post_id):
    try:
        post = BlogPost.objects.get(pk=post_id)
    except BlogPost.DoesNotExist:
        return HttpResponse("Post not found", status=404)

    # 处理完逻辑后,将用户重定向至文章详情页
    return redirect('myapp:blog_post_detail', pk=post.id)
  • 在这个例子中,'myapp:blog_post_detail' 是在 urls.py 中定义的详细文章详情页面的 URL 名称,pk=post.id 表示要传递的文章 ID 参数。

【补充】django自带重启功能

  • 当识别到项目中代码有变化之后 隔段时间会自动重启 但是有时候较慢
  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值