我构建了一个Flask应用程序,我想使用Plotly为我的数据嵌入一个图表。我对Plotly进行了一些研究,发现它与Dash有关,并且在确定我的项目需要使用这两个方法中的哪一个时遇到了一些麻烦。它们之间有什么区别?
我已经在 Heroku 上部署了这个 Python 应用程序,我希望它连接到 MongoDB Atlas 集群。我使用我的字符串连接到集群,但由于某种原因,我不断raise OperationFailure(msg % errmsg, code, response)
pymongo.errors.OperationFailure: bad auth Authentication failed.检查两次,并且用户和密码都正确。知道为什么会这样吗?
from pymongo import MongoClient
import time
import random
import time
import datetime
client = MongoClient('mongodb+srv://USER:<MYPASSWORD>@test-2liju.mongodb.net/test?retryWrites=true')
db = client.one
mycol = client["tst"]
while True:
test = int(random.randrange(-99999990,90000000,1))
dic = {"num": test}
result = db.tst.insert_one(dic)
print(test)
time.sleep(5)
Run Code Online (Sandbox Code Playgroud) 我有以下一组 OHLC 数据:
[[datetime.datetime(2020, 7, 1, 6, 30), '0.00013449', '0.00013866', '0.00013440', '0.00013857', '430864.00000000', 1593579599999, '59.09906346', 1885, '208801.00000000', '28.63104974', '0', 3.0336828016952944], [datetime.datetime(2020, 7, 1, 7, 0), '0.00013854', '0.00013887', '0.00013767', '0.00013851', '162518.00000000', 1593581399999, '22.48036621', 809, '78014.00000000', '10.79595625', '0', -0.02165439584236435], [datetime.datetime(2020, 7, 1, 7, 30), '0.00013851', '0.00013890', '0.00013664', '0.00013780', '313823.00000000', 1593583199999, '43.21919087', 1077, '157083.00000000', '21.62390537', '0', -0.5125983683488642], [datetime.datetime(2020, 7, 1, 8, 0), '0.00013771', '0.00013818', '0.00013654', '0.00013707', '126925.00000000', 1593584999999, '17.44448931', 428, '56767.00000000', '7.79977280', '0', -0.46474475346744676], [datetime.datetime(2020, 7, 1, 8, 30), '0.00013712', '0.00013776', '0.00013656', '0.00013757', …Run Code Online (Sandbox Code Playgroud) 我有一个数据库,我正在其中发送一些数据。同时,我正在运行一个 Python 脚本,我希望该脚本在添加后立即在我的控制台上将最后一个条目发送到 MongoDB 数据库。
我几天来一直在寻找解决方案,但没有找到任何东西。
我做了一些研究并发现:a)可尾游标,但唯一的问题是我的数据库没有上限,并且由于我将每 5 秒放入一次数据,我担心上限数据库不足以满足我的需求因为当达到最大大小时,它将开始覆盖最旧的记录b)change_streams,但我的数据库不是副本集,我对此相当陌生,所以我仍然需要了解更高级的主题,例如RS。
有什么建议吗?
这是我到目前为止得到的:
from pymongo import MongoClient
import pymongo
import time
import random
from pprint import pprint
#Step 1: Connect to MongoDB - Note: Change connection string as needed
client = MongoClient(port=27017)
db = client.one
mycol = client["coll"]
highest_previous_primary_key = 1
while True:
cursor = db.mycol.find()
for document in cursor:
# get the current primary key, and if it's greater than the previous one
# we print the results and increment the …Run Code Online (Sandbox Code Playgroud) 我想将 Vue 添加到我的 Django 项目中,但我无法理解其中的某些部分。
目前,我的项目已经有一堆模板和视图。一切都由视图呈现,我使用的唯一 JS 是用于 Jquery。添加 Vue 的需要是为了改进我的 UI。我不需要 Vue 作为我的前端,我只想在这里和那里向我的模板添加一些 Vue 组件。
经过一番研究,我发现了 Webpack + Vue 方法。这对我的项目来说不是正确的方法,因为它应该用于前端完全建立在 Vue 上并且与 Django 后端分开的项目,所以这对我来说不是正确的方法。
此时,唯一的方法是在我的 django html 模板上使用 CDN 添加它:
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.0"></script>
Run Code Online (Sandbox Code Playgroud)
这种方法可行吗?
我正在测试我的注册视图,我注意到如果我尝试使用现有的用户名进行注册,我会收到错误消息;如果我尝试使用已经存在的电子邮件进行注册,该应用程序会让我这样做。
显然,我不希望有人在我的网站上使用同一电子邮件注册多个帐户。我对 Django 相当陌生,因为我注意到表单检查用户名是否已经存在,我认为它会对电子邮件字段做同样的事情。
我真的不知道如何开始,我应该在我的观点上还是在表格上工作?以及如何让它循环遍历我的数据库并查找电子邮件是否已注册?我以为email = form.cleaned_data.get('email')会做的伎俩,但它没有。任何帮助表示赞赏。
这是我的观点:
def register(request):
if request.method == "POST":
form = NewUserForm(request.POST)
if form.is_valid():
user = form.save()
username = form.cleaned_data.get('username')
email = form.cleaned_data.get('email')
messages.success(request, f"New Account Created: {username}")
login(request, user)
messages.info(request, f"You are now logged in as {username}")
return redirect("main:homepage")
else:
for msg in form.error_messages:
messages.error(request, f"{msg}: {form.error_messages[msg]}")
form = NewUserForm
return render(request,
"main/register.html",
context={"form":form})
Run Code Online (Sandbox Code Playgroud)
这是表格:
class NewUserForm(UserCreationForm):
email = forms.EmailField(required=True)
class Meta:
model = User
fields = ("username", "email", "password1", "password2")
def …Run Code Online (Sandbox Code Playgroud) 我有一个已经存在的 Django 应用程序。我想添加一个系统,将数据从我的 Django 应用程序发送到托管在另一台服务器上的另一个 Python 应用程序,以便 Python 应用程序可能以 json 格式从 Django 应用程序接收数据。
因此,例如,我需要创建一个视图,每隔几秒将数据从数据库表发送到此应用程序,或者在点击表单时,将数据发送到此外部应用程序。
我怎样才能做到这一点?是否有针对此特定问题的示例?我不知道我需要使用什么工具来创建这个系统,我只知道我需要使用 Celery 来执行异步任务,但没有别的;我应该使用 Webhooks 吗?还是 Django 频道?
编辑:添加更多上下文:我有我的 Django 客户端。然后我在另一台服务器上运行了一两个 Python 应用程序。在我的 Django 客户端上,我有一些表单。提交表单后,数据将保存在数据库中,但我也希望将此数据立即发送到我的 Python 应用程序。Python 应用程序应该从 Django 接收 Json 格式的数据,并根据用户提交的值执行一些任务。然后应用程序应该向 Django 发送响应。
我正在构建一个项目,在其中我将能够保存 API 密钥,然后该密钥将用于从外部 python 机器人在我的网站上执行一些操作。
显然,除了我的代码将使用这些密钥执行某些任务之外,任何人都不应访问该密钥。
目前,密钥存储在我的数据库中并且没有加密,但现在我想让这个系统尽可能安全,这样即使有人可以访问我的凭据,他也无法使用它。
问题是我对安全和加密知之甚少。我的第一个想法是加密密钥,但我真的不知道该怎么做。
基本上,这就是它应该如何工作:使用表单提交密钥 -> 密钥必须加密并保存在我的数据库上 -> 稍后,当我需要执行任务时,应该解密这些密钥以便执行以下操作我需要
我的做法正确吗?我怎样才能在 Django 中实现这一点?
这是我目前的观点:
def homepage(request):
if request.method == 'POST':
# create a form instance and populate it with data from the request:
form = ApiForm(request.POST)
# check whether it's valid:
if form.is_valid():
# process the data in form.cleaned_data as required
send = form.save()
send.save()
messages.success(request, f"Success")
else:
form = ApiForm()
return render(request,
"main/home.html",
context={"form":form})
Run Code Online (Sandbox Code Playgroud)
这是表格:
class ApiForm(forms.ModelForm):
key = forms.CharField(widget=forms.TextInput(
attrs={
'placeholder': 'Enter here your api …Run Code Online (Sandbox Code Playgroud) 我正在尝试将 Django 应用程序部署到 Heroku,但我不断收到以下错误:
2020-04-13T08:45:00.134349+00:00 app[web.1]: Traceback (most recent call last):
2020-04-13T08:45:00.134389+00:00 app[web.1]: File "/app/.heroku/python/bin/daphne", line 8, in <module>
2020-04-13T08:45:00.134519+00:00 app[web.1]: sys.exit(CommandLineInterface.entrypoint())
2020-04-13T08:45:00.134524+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/daphne/cli.py", line 191, in entrypoint
2020-04-13T08:45:00.134697+00:00 app[web.1]: cls().run(sys.argv[1:])
2020-04-13T08:45:00.134699+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/daphne/cli.py", line 252, in run
2020-04-13T08:45:00.134891+00:00 app[web.1]: application = import_by_path(args.application)
2020-04-13T08:45:00.134913+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/daphne/utils.py", line 14, in import_by_path
2020-04-13T08:45:00.135028+00:00 app[web.1]: target = getattr(target, bit)
2020-04-13T08:45:00.135056+00:00 app[web.1]: AttributeError: module 'mysite.asgi' has no attribute 'channel_layer
Run Code Online (Sandbox Code Playgroud)
这是我的 Procfile:
web: daphne WR.asgi:channel_layer --port $PORT --bind 0.0.0.0 -v2
Run Code Online (Sandbox Code Playgroud)
这是我在 …
我从 API 收到以下订单数据:
myData = [[9656.37, 0.063], [9656.32, 0.688], [9656.21, 0.729], [9656.07, 0.618], [9656.01, 0.598], [9656.0, 0.917], [9655.92, 0.417], [9655.84, 0.403], [9655.81, 1.032], [9655.6, 1.394], [9655.5, 0.043], [9655.41, 0.6], [9655.32, 0.441], [9655.31, 3.359], [9655.29, 0.15], [9655.0, 11.463], [9654.89, 0.612], [9654.88, 0.613], [9654.87, 0.602], [9654.74, 0.382], [9654.69, 0.75], [9654.63, 8.106], [9654.62, 0.8], [9654.58, 0.12], [9654.44, 0.54], [9654.38, 0.311], [9654.33, 2.758], [9654.31, 0.72], [9654.25, 0.02], [9654.14, 4.0], [9654.0, 0.155], [9653.95, 0.642], [9653.91, 0.5], [9653.83, 0.063], [9653.81, 0.6], [9653.38, 0.05], [9653.34, 0.1], [9653.31, …Run Code Online (Sandbox Code Playgroud) 我创建了一个MongoDB数据库,我正在向它发送数据.与此同时,我正在运行一个Python脚本来从该数据库中获取数据.我希望我的脚本在将新条目推送到数据库后立即将其打印到我的控制台,但我不知道如何完成此操作.
这是我目前的工作,但我不喜欢它,因为每次它都会在db上打印整个数据,即使我只想更新最后一个条目/条目:
from pymongo import MongoClient
import time
import random
from pprint import pprint
client = MongoClient(port=27017)
arr = []
db = client.one
mycol = client["coll"]
while True:
cursor = db.mycol.find()
for document in cursor:
print(document['num'])
time.sleep(2)
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
python ×10
django ×5
mongodb ×3
django-views ×2
heroku ×2
python-3.x ×2
charts ×1
django-forms ×1
django-urls ×1
list ×1
numpy ×1
pandas ×1
plotly ×1
plotly-dash ×1
security ×1
stumpy ×1
vue.js ×1