标签: django-request

如何安全地访问 Django 模型中的请求对象

我正在尝试做的事情:

我正在尝试访问 django 模型中的请求对象,以便我可以使用request.user.

我尝试过的:

我在这个网站上发现了一个黑客。但是评论中有人指出在生产时不要这样做。

我也尝试__init__这篇文章中提到的那样覆盖模型的方法。但我得到了一个AttributeError: 'RelatedManager' object has no attribute 'request'

模型.py:

class TestManager(models.Manager):
    def user_test(self):
        return self.filter(user=self.request.user, viewed=False)

class Test(models.Model):

    def __init__(self, *args, **kwargs):
        self.request = kwargs.pop('request', None)
        super(Test, self).__init__(*args, **kwargs)

    user = models.ForeignKey(User, related_name='test') 
    viewed = models.BooleanField(default=False)
    objects = TestManager()
Run Code Online (Sandbox Code Playgroud)

django django-models django-request

6
推荐指数
1
解决办法
7793
查看次数

根据请求在 Django 中间件中添加自定义标头

我想在 django 中实现一个中间件,它将在get_response(request)函数之前在请求的现有标头上附加一个标头。

不过,当这样尝试时:

request.headers['CUSTOM_HEADER'] = 'CUSTOM_VALUE'
Run Code Online (Sandbox Code Playgroud)

我收到错误:'HttpHeaders'对象不支持项目分配
另外,在django的请求(WSGIRequest)中,没有像python的请求模块那样的add_headers函数。
关于如何实现这一点有什么想法吗?

django django-request

6
推荐指数
1
解决办法
8146
查看次数

从 Django 请求中获取域名

我有一个域名的网站www.example1.com,最近我已经指出另一个域DNSwww.example2.com到包含www.example1.com同一台服务器,这样既www.example1.comwww.example2.com服务相同的代码,但域名应该是不同的,我想从Django的请求获得域名如下

def homepage(request):
    domain = request.META['HTTP_HOST']
    if domain == 'www.example1.com':
       return HTTPResponseReredirect('/new/')
    elif domain == 'www.example2.com':
       return HTTPResponseReredirect('/old/')
Run Code Online (Sandbox Code Playgroud)

所以基于域名,我想将用户重定向到不同的网页,但每次我使用request.META['HTTP_HOST']输出时都是一个 IP 地址127.0.0.1:8001,如下所示

META:{'HTTP_ACCEPT': ‘text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8’,

'HTTP_ACCEPT_ENCODING': 'gzip, deflate, sdch, br',
'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.8',
'HTTP_CONNECTION': 'close',
'HTTP_COOKIE': 'sessionid=xxxxxxxxxxxxxxxx; ',
'HTTP_HOST': '127.0.0.1:8001',
'HTTP_UPGRADE_INSECURE_REQUESTS': '1',
'HTTP_USER_AGENT': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',
'PATH_INFO': u'/',
'QUERY_STRING': '',
'RAW_URI': '/',
'REMOTE_ADDR': '127.0.0.1',
'REMOTE_PORT': '41280',
'REQUEST_METHOD': 'GET',
'SCRIPT_NAME': u'',
'SERVER_NAME': …
Run Code Online (Sandbox Code Playgroud)

python django dns django-request

5
推荐指数
1
解决办法
7203
查看次数

Django 如何检查请求是否是 Ajax

HttpRequest.is_ajax() 方法已被弃用,因为它依赖于 jQuery 特定的方式来表示 AJAX 调用,而当前的使用倾向于使用 JavaScript Fetch API。根据您的用例,您可以编写自己的 AJAX 检测方法,或者如果您的代码依赖于客户端 Accept HTTP 标头,则可以使用新的 HttpRequest.accepts() 方法。

django ajax django-request django-3.1 django-4.0

5
推荐指数
2
解决办法
4291
查看次数

获取模型类中“created_by”字段的当前用户

我目前正在开发 Django 应用程序,并且尝试将当前用户设置为模型上的默认用户,但它不起作用。

created_by = models.ForeignKey(User, default=request.user, null=True, blank=True, on_delete=models.DO_NOTHING, related_name='created_by')
Run Code Online (Sandbox Code Playgroud)

我尝试重写 save() 方法,但它也不起作用,有人对此事有任何经验吗?

预先非常感谢您的帮助

django django-models django-users django-request

4
推荐指数
1
解决办法
1万
查看次数