小编psy*_*ok7的帖子

Django Rest Framework + Django-Allauth 密码重置/恢复

我正在尝试使用 Django Rest Framework 和 Django-Allauth 创建密码恢复流程。

Django-Allauth 已经完成了我需要的一切,我的问题是我可以以编程方式调用 django-allauth 函数或从 DRF 接收我想要重置的电子邮件的视图,并继续正常的 allauth 流程的其余部分(例如创建临时令牌和发送电子邮件给客户?

如果其中一个应用程序正在做我需要的一切,我不认为必须重写所有代码。只需要一些关于如何“粘合”它们的帮助:)

python django password-recovery django-rest-framework django-allauth

6
推荐指数
2
解决办法
3009
查看次数

将Django的默认用户名最大长度从30增加到75的最简单快捷的方法

所以我看到了很多解决方案,但我找到了旧版Django的大多数答案,我想知道是否有任何变化.

基本上我使用Django 1.7,我想覆盖username默认的django USER类中的u 字段,允许超过30个字符,即max_length=75.

我应该使用,AbstractBaseUser还是有更简单的方法max_length=75

python django django-models django-1.7

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

Django celery 击败了警告消息的重大偏差

所以我正在使用虚拟机(vagrant)进行开发,当我在其中启动 celerybeat 时,我收到此消息:

[2014-07-15 10:16:49,627: INFO/MainProcess] beat: Starting...
[W 140715 09:16:51 state:74] Substantial drift from celery@worker_publications may mean clocks are out of sync.  Current drift is
    3600 seconds.  [orig: 2014-07-15 09:16:51.476125 recv: 2014-07-15 10:16:51.474109]

[W 140715 09:16:51 state:74] Substantial drift from celery@worker_queue may mean clocks are out of sync.  Current drift is
    3600 seconds.  [orig: 2014-07-15 09:16:51.480642 recv: 2014-07-15 10:16:51.475021]
Run Code Online (Sandbox Code Playgroud)

当我在里面约会时,我得到了一个Tue Jul 15 09:25:11 UTC 2014,但问题是我住在葡萄牙,我的主机给了我Ter Jul 15 10:25:39 WEST 2014

对我来说解决这个问题的最佳方法是什么?

当我把这个上线的时候呢?

我正在使用celery 3.1.12 …

django timezone celery django-celery celerybeat

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

Django亚马逊s3 SuspiciousOperation

因此,当我尝试从浏览器访问S3上的某个图像时,一切正常.但是当python正在做它时,我得到一个SuspiciousOperation错误.我的静态文件夹在S3上是公共的,所以我真的不知道它来自哪里.

Publication.objects.get(id=4039).cover.url
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/home/vagrant/.pyenv/versions/blook/lib/python2.7/site-packages/django/db/models/fields/files.py", line 64, in _get_url
    return self.storage.url(self.name)
  File "/home/vagrant/.pyenv/versions/blook/lib/python2.7/site-packages/queued_storage/backends.py", line 291, in url
    return self.get_storage(name).url(name)
  File "/home/vagrant/.pyenv/versions/blook/lib/python2.7/site-packages/queued_storage/backends.py", line 115, in get_storage
    elif cache_result is None and self.remote.exists(name):
  File "/home/vagrant/.pyenv/versions/blook/lib/python2.7/site-packages/storages/backends/s3boto.py", line 410, in exists
    name = self._normalize_name(self._clean_name(name))
  File "/home/vagrant/.pyenv/versions/blook/lib/python2.7/site-packages/storages/backends/s3boto.py", line 341, in _normalize_name
    name)
SuspiciousOperation: Attempted access to 'http:/s3-eu-west-1.amazonaws.com/xpto/static/images/default-image.png' denied.
Run Code Online (Sandbox Code Playgroud)

我的设置:

AWS_S3_SECURE_URLS = True  # use http instead of https
S3_URL = 'http://s3-eu-west-1.amazonaws.com/%s' % AWS_STORAGE_BUCKET_NAME …
Run Code Online (Sandbox Code Playgroud)

django amazon-s3 boto amazon-web-services django-storage

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

Scrapy + Splash + ScrapyJS

我正在使用Splash 2.0.2 + Scrapy 1.0.5 + Scrapyjs 0.1.1,我仍然无法通过点击呈现JavaScript.以下是一个示例网址https://olx.pt/anuncio/loja-nova-com-250m2-garagem-em-box-fechada-para-arrumos-IDyTzAT.html#c49d3d94cf

我仍然没有提供电话号码的页面:

class OlxSpider(scrapy.Spider):
    name = "olx"
    rotate_user_agent = True
    allowed_domains = ["olx.pt"]
    start_urls = [
        "https://olx.pt/imoveis/"
    ]

    def parse(self, response):
        script = """
        function main(splash)
            splash:go(splash.args.url)
            splash:runjs('document.getElementById("contact_methods").getElementsByTagName("span")[1].click();')
            splash:wait(0.5)
            return splash:html()
        end
        """
        for href in response.css('.link.linkWithHash.detailsLink::attr(href)'):
            url = response.urljoin(href.extract())
            yield scrapy.Request(url, callback=self.parse_house_contents, meta={
                'splash': {
                    'args': {'lua_source': script},
                    'endpoint': 'execute',
                }
            })

        for next_page in response.css('.pager .br3.brc8::attr(href)'):
            url = response.urljoin(next_page.extract())
            yield scrapy.Request(url, self.parse)

    def parse_house_contents(self, response):

        import ipdb;ipdb.set_trace()
Run Code Online (Sandbox Code Playgroud)

我怎么能让这个工作?

python screen-scraping scrapy scrapy-spider

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

PyMongo $addToSet 不工作

所以我正在使用pymongo==3.2.1Mongo 3.2但由于某种原因我的$addToSet(避免重复)不起作用。

我确保我的checked_on时间戳匹配,例如ISODate("2016-04-21T00:00:00.000Z")

我的结构是这样的:

{
    "_id": ObjectID("57062e357e254255a531165e"),
    "availability": [
        {
            "checked_on": ISODate("2016-04-21T00:00:00.000Z"),
            "days": [
                {
                    "available": false,
                    "day": ISODate("2016-04-29T00:00:00.000Z")
                },
                {
                    "available": false,
                    "day": ISODate("2016-04-30T00:00:00.000Z")
                }
            ]
        }
    ],
    "is_active": true,
    "updated_on": ISODate("2016-04-21T13:41:12.449Z")
}
Run Code Online (Sandbox Code Playgroud)

我都尝试过:

result = self.db[self.collection_name].update_one(
    {'_id': doc['_id']},
    {
        '$addToSet': {
            'availability': {
                '$each': [
                    {
                        'checked_on': datetime.datetime(
                            date.year, date.month, date.day
                        ),
                        'days': meta['availability']
                    }
                ]
            }
        },
        '$set': {
            'is_active': is_active, 'updated_on': date
        }
    }
)
Run Code Online (Sandbox Code Playgroud)

result …
Run Code Online (Sandbox Code Playgroud)

python mongodb pymongo pymongo-3.x

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

Python Selenium + Datepicker问题

我试图让每一天的可用性/价格https://www.homeaway.pt/arrendamento-ferias/p418841点击日历,检查这天被占用与否,点击next按钮,以便它可以跳到下个月.

我还想点击到货日期,然后选择结账日期,以便我可以看到它的价格.

我遇到了问题,因为我尝试使用chrome工作的命令但是它们似乎不能在selenium中工作.

例如:

我做:

        self.driver.get(url)
        wait = WebDriverWait(self.driver, 10)
        try:
            elem = wait.until(
                EC.visibility_of_element_located(
                    (
                        By.CSS_SELECTOR,
                        "#startDateInput"
                    )
                )
            )
        except TimeoutException:
            pass
        else:
            elem.send_keys(Keys.NULL)
Run Code Online (Sandbox Code Playgroud)

这似乎打开了日历,我还可以列出可选择的日期:

for x in self.driver.find_elements_by_css_selector(".stab-calendar-day.stab-calendar-day-active.stab-calendar-day-selectable.pull-left"): print(x.get_attribute('data-formatted-date'))
Run Code Online (Sandbox Code Playgroud)

但是当我想跳到下一个活跃的月份时,它会一直显示相同的初始月份,这是因为这不起作用:

self.driver.find_element_by_css_selector('.stab-calendar-controls-next').click()
Run Code Online (Sandbox Code Playgroud)

selenium.common.exceptions.NoSuchElementException:消息:无法找到元素:{"method":"css selector","selector":".stab-calendar-controls-next"}

关于我如何获得每套选定日期房屋的可用性/价格的任何想法?

python selenium datepicker web-scraping

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

Django Postgres Full Text TrigramSimilarity Multiple Fields

我想弄清楚如何将TrigramSimilaritywithunaccent用于多个字段。

到目前为止,我有:

def filter_by_location(self, queryset, location):
    log.info('Filtering location: "{location}"'.format(**locals()))
    queryset = queryset.filter(
        Q(accommodation__district__name__unaccent__trigram_similar=location) |
        Q(accommodation__municipality__name__unaccent__trigram_similar=location) |
        Q(accommodation__settlement__name__unaccent__trigram_similar=location)
    )
Run Code Online (Sandbox Code Playgroud)

但是我阅读了我可以订购的文档similarity(不确定上面的代码是否自动执行),所以我尝试这样做:

    queryset = queryset.filter(
        Q(accommodation__district__name__unaccent__trigram_similar=location) |
        Q(accommodation__municipality__name__unaccent__trigram_similar=location) |
        Q(accommodation__settlement__name__unaccent__trigram_similar=location)
    ).annotate(
        similarity=TrigramSimilarity(
            'accommodation__district__name', location
        ) + TrigramSimilarity(
            'accommodation__municipality__name', location
        ) + TrigramSimilarity(
            'accommodation__settlement__name', location
        ),
    ).filter(similarity__gt=0.3).order_by('-similarity')
Run Code Online (Sandbox Code Playgroud)

我很快意识到+inTrigramSimilarity并没有做OR,但我需要在所有这些不同的领域进行全文搜索。

考虑到查询性能,我实现这一目标的正确语法是什么(使用OR而不是和AND)?

谢谢

django postgresql full-text-search

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

在 Ubuntu 上使用 Scrapy 和 VPN

所以我使用 Scrapy 来抓取一些网站,我想增加我在互联网上的隐私,也避免被禁止,所以我读到我可以通过使用像http://www.ninjasproxy.com/http这样的高级代理列表来实现这一点://hidemyass.com/或 VPN 或 Tor。

据我了解,付费 VPN 将是一个不错的选择,就像http://hidemyass.com/提供的那样,但我似乎找不到任何实际显示 Scrapy 与像 hidemyass 这样的 VPN 集成的代码。

我只看到了一个像https://github.com/aivarsk/scrapy-proxies这样的例子,它展示了如何使用代理列表。

如何让 Scrapy 与 VPN 一起工作?如果我不能代理列表足以保持匿名?

python vpn proxy scrapy web-scraping

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

Amazon ELB + Django HTTPS 问题

我一直在搜索,但似乎没有一个解决方案适合我的情况:
我有一个来自 AWS 的经典弹性负载均衡器,将请求传递到我的 Nginx docker 容器,这些容器也代理传递到我的 python Gunicorn 容器。

Nginx 配置:

server {
    listen 80;
    listen [::]:80;
    ...

    if ($http_x_forwarded_proto = 'http') {
        return 301 https://$server_name$request_uri;
    }

    location / {
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Scheme $scheme;
        proxy_pass http://app_server;
    }
 }
Run Code Online (Sandbox Code Playgroud)

在我的 Django 设置中,我有:

SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
SECURE_SSL_REDIRECT = False
Run Code Online (Sandbox Code Playgroud)

问题是,当向端点发出请求时,如果我print(request.META.get('HTTP_X_FORWARDED_PROTO'))得到的http不是https. 这会导致我的 DRF 自动生成的文档链接生 …

django amazon-elb django-rest-framework

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