【问题标题】:Django "request" objectDjango“请求”对象
【发布时间】:2014-02-20 19:31:40
【问题描述】:

几周前我刚开始学习 Django 和 Python,并负责一个项目,以使用 Django/Python/MySQL 组合来管理表单处理。我的背景是 C++,所以如果在 Python/Django 语法中有任何 C++ 类比,请随时参考。

到目前为止,我了解 HTTPRequest 对象的作用,但无法理解这段 sn-p 代码:

@login_required(login_url="/some_directory/")
def xyz(request):
    item1 = request.GET['item1']
    user = request.user
    page = Page.objects.get(title = item1)
    item1info = {}
    perm_all = get_perms(user,page)
    item1info["industry"] = page.industry.split(',')

对于第一行,“@”是做什么的? “@login_required”是 Django 命令还是已经由编码人员定义?

我知道“def xyz(request)”定义了一个函数,但参数“request”是在另一个文件 (urls.py) 中预定义的吗?

request.GET['item1'] 有什么作用?它是从查询字符串中检索元素“item1”的值吗?

【问题讨论】:

  • @login_required 是一个装饰器。装饰器是python中的一个基本概念。我建议您在尝试理解 django 之前阅读 python 教程/书籍。

标签: django


【解决方案1】:
  • “@”是DecoratorLogin required 是 Django 提供的一个装饰器,需要当前用户(在 request.user 中)登录才能访问这个视图。

  • “request”参数在调用时由 Django 本身传递给 View 函数。任何有效的视图函数都必须将请求作为参数接收

  • Request.GET 是一个 Python 字典,包含通过 GET 方法在请求中传递的所有参数(作为 URL 查询字符串的一部分)。

【讨论】:

  • 视图函数在哪里?它在 urls.py 中吗?
  • 查看函数位于您应用的目录views.py中。示例:myapp/views.py
猜你喜欢
  • 2015-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-30
  • 1970-01-01
  • 2020-06-19
  • 2020-11-04
  • 1970-01-01
相关资源
最近更新 更多