几周前我刚刚开始学习Django和Python,并且负责使用Django / Python / MySQL组合管理表单处理的项目。我的背景是C ++,所以如果Python / Django语法中有任何C ++类比,可以随意引用它们。
到目前为止,我理解HTTPRequest对象的作用,但无法理解这段代码:
@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”的值吗?
答案 0 :(得分:3)
“@”是Decorator。 Login required是Django提供的装饰器,需要当前用户(在request.user中)登录才能访问此视图。
“请求”参数在被Django本身调用时传递给View函数。任何有效的视图函数都必须作为参数
Request.GET是一个python字典,包含GET方法在请求中传递的所有参数(作为URL查询字符串的一部分)。