• django shortcut function


    render()

    render(request, template_name, context=None, content_type=None, status=None, using=None)

    必须参数

    request:视图接受到的request
    
    template_name:模板名称
    

    可选参数

    context:上下文变量
    
    content_type:响应的MIME类型, 默认为DEFAULT_CONTENT_TYPE设置的值
    
    status:响应的状态,默认为200
    
    using:用于加载模板的模板引擎
    

    render_to_response()

    弃用,不需要request参数的render()

    render_to_response(template_name, context=None, content_type=None, status=None, using=None)

    redirect()

    redirect(to, permanent=False, *args, **kwargs)

    将HttpResponseRedirect返回给传递的参数的适当URL。

    参数可能是

    1. a Model,模型的get_absolute_url()方法将被调用
    2. a view name,可能带有参数:reverse()将用于反向解析名称。
    3. 绝对URL和相对URL

    默认情况下发出临时重定向;传递permanent=True发出永久重定向。

    Examples

    (1). a Model example

    from django.shortcuts import redirect
    
    def my_view(request):
        ...
        obj = MyModel.objects.get(...)
        return redirect(obj)
    

    (2). a view name example

    通过传递视图的名称和一些位置或关键字参数(可选);URL将使用reverse()方法反向解析
    
    def my_view(request):
    ...
    return redirect('some-view-name', foo='bar')
    

    (3). An absolute or relative URL example

    通过传递一个硬编码URL重定向到
    
    def my_view(request):
        ...
        return redirect('/some/url/')
    
    # 也可以写成全路径
    
    def my_view(request):
    	...
    	return redirect('https://example.com/')
    

    get_object_or_404()

    调用get()方法 当没有查找到对象时抛出http404异常

    from django.shortcuts import get_object_or_404 
    product = get_object_or_404(Product, pk=1)
    

    相当与以下代码

    from django.http import Http404
    
    try:
        product = Product.objects.get(pk=1)
    except MyModel.DoesNotExist:
        raise Http404 
    

    get_object_or_404(klass, *args, **kwargs)

    参数:

    klass:用于获取对象的Model,Manage,Queryset实例
    
    **kwargs:用于get()和filter()查询的条件参数
    

    接收Queryset参数

    queryset = Book.objects.filter(title__startswith='M')
    get_object_or_404(queryset, pk=1)
    

    # 上边的例子有点复杂,其实相当于以下代码
    
    get_object_or_404(Book, title__startswith='M', pk=1)
    

    接收自定义Managers

    get_object_or_404(Book.dahl_objects, title='Matilda')
    

    接收related Managers

    author = Author.objects.get(name='Roald Dahl')
    get_object_or_404(author.book_set, title='Matilda')
    

    get_list_or_404()

    from django.shortcuts import get_list_or_404
    
    def my_view(request):
        my_objects = get_list_or_404(MyModel, published=True)
    

    相当于以下代码

    from django.http import Http404
    
    def my_view(request):
        my_objects = list(MyModel.objects.filter(published=True))
        if not my_objects:
            raise Http404("No MyModel matches the given query.")
  • 相关阅读:
    mysql数据库引擎myisam与innodb
    Java观察者模式的理解
    线程安全的单例模式
    线程相关
    java 线程读写锁
    原子变量AtomicInteger
    接口文档管理,版本管理工具,阿里RAP的windows下部署
    谷歌浏览器报错:跨域问题处理( Access-Control-Allow-Origin)_ 用于本地测试的快捷解决方法
    mysql bin-log日志记录
    阿里RDS中插入emoji 表情插入失败的解决方案
  • 原文地址:https://www.cnblogs.com/LTEF/p/9736817.html
Copyright © 2020-2023  润新知