zoukankan      html  css  js  c++  java
  • 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.")
  • 相关阅读:
    一个疑难杂症 IIS URL区分大小写(FF的自动变换URL问题)?
    炉石传说 C# 设计文档(序)
    炉石传说 C# 开发笔记(BS上线尝试)
    炉石传说 C# 开发笔记(BS模式Demo)
    炉石传说 C# 开发笔记(6月底小结)
    炉石传说 C# 开发笔记 (初版)
    使用python+requests实现接口自动化测试
    SpringMVC之数据传递二
    SpringMVC之数据传递一
    SpringMVC之HandlerMapping的使用
  • 原文地址:https://www.cnblogs.com/LTEF/p/9736817.html
Copyright © 2011-2022 走看看