我正在尝试使用 Django Rest Framework 和 Django-Allauth 创建密码恢复流程。
Django-Allauth 已经完成了我需要的一切,我的问题是我可以以编程方式调用 django-allauth 函数或从 DRF 接收我想要重置的电子邮件的视图,并继续正常的 allauth 流程的其余部分(例如创建临时令牌和发送电子邮件给客户?
如果其中一个应用程序正在做我需要的一切,我不认为必须重写所有代码。只需要一些关于如何“粘合”它们的帮助:)
python django password-recovery django-rest-framework django-allauth
所以我看到了很多解决方案,但我找到了旧版Django的大多数答案,我想知道是否有任何变化.
基本上我使用Django 1.7,我想覆盖username默认的django USER类中的u 字段,允许超过30个字符,即max_length=75.
我应该使用,AbstractBaseUser还是有更简单的方法max_length=75
所以我正在使用虚拟机(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 …
因此,当我尝试从浏览器访问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) 我正在使用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)
我怎么能让这个工作?
所以我正在使用pymongo==3.2.1,Mongo 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) 我试图让每一天的可用性/价格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"}
关于我如何获得每套选定日期房屋的可用性/价格的任何想法?
我想弄清楚如何将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)?
谢谢
所以我使用 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 一起工作?如果我不能代理列表足以保持匿名?
我一直在搜索,但似乎没有一个解决方案适合我的情况:
我有一个来自 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 ×6
python ×6
scrapy ×2
web-scraping ×2
amazon-elb ×1
amazon-s3 ×1
boto ×1
celery ×1
celerybeat ×1
datepicker ×1
django-1.7 ×1
mongodb ×1
postgresql ×1
proxy ×1
pymongo ×1
pymongo-3.x ×1
selenium ×1
timezone ×1
vpn ×1