我对我的电报机器人进退两难。假设我必须创建一个函数来询问连接到机器人的每个用户,每周/每月一次,一个问题:
def check_the_week(bot, update):
reply_keyboard = [['YES', 'NO']]
bot.send_message(
chat_id=update.message.chat_id,
text=report,
reply_markup=ReplyKeyboardMarkup(reply_keyboard, one_time_keyboard=True)) # sends the total nr of hours
update.reply_text("Did you report all you working hour on freshdesk for this week?",
ReplyKeyboardMarkup(reply_keyboard, one_time_keyboard=True))
if update.message.text == "YES":
update.message.reply_text(text="Are you sure?",
reply_markup=ReplyKeyboardMarkup(reply_keyboard, one_time_keyboard=True))
# Asks confirmation
if update.message.text == "YES":
update.message.reply_text(text="Thank you for reporting your working hours in time!")
elif update.message.text == "NO":
update.message.reply_text(text="Please, check you time reports and add missing")
elif update.message.text == "NO":
update.message.reply_text(text="Please, check you time reports …Run Code Online (Sandbox Code Playgroud) 尝试为我的应用创建一个注册页面。我正在使用来自pythonanywhere.com 的Flask 框架和 MySQL 数据库。
@app.route('/register/', methods=["GET","POST"])
def register_page():
try:
form = RegistrationForm(request.form)
if request.method == "POST" and form.validate():
email = form.email.data
password = sha256_crypt.encrypt((str(form.password.data)))
c, conn = connection()
x = c.execute("SELECT * FROM users WHERE email = (%s)",
(email))
if int(x) > 0:
flash("That email adress is already in use.")
return render_template('register.html', form=form)
else:
c.execute("INSERT INTO users (email, password) VALUES (%s, %s)",
(thwart(email),thwart(password)))
conn.commit()
flash("Thanks for registering!")
c.close()
conn.close()
gc.collect()
session['logged_in'] = True
session['email'] = email
return …Run Code Online (Sandbox Code Playgroud) 再次尝试实现 django-registration。当我尝试将它部署到 heroku 并注册一个新用户时,它给了我一个奇怪的错误:
Traceback:
#some irrelevant traceback
File "/app/.heroku/python/lib/python2.7/site-packages/registration/views.py" in post
43. return self.form_valid(request, form)
File "/app/.heroku/python/lib/python2.7/site-packages/registration/views.py" in form_valid
91. new_user = self.register(request, form)
File "/app/.heroku/python/lib/python2.7/site-packages/registration/backends/default/views.py" in register
86. site = get_current_site(request)
File "/app/.heroku/python/lib/python2.7/site-packages/django/contrib/sites/shortcuts.py" in get_current_site
15. return Site.objects.get_current(request)
File "/app/.heroku/python/lib/python2.7/site-packages/django/contrib/sites/models.py" in get_current
67. return self._get_site_by_request(request)
File "/app/.heroku/python/lib/python2.7/site-packages/django/contrib/sites/models.py" in _get_site_by_request
44. SITE_CACHE[host] = self.get(domain__iexact=host)
File "/app/.heroku/python/lib/python2.7/site-packages/django/db/models/manager.py" in manager_method
122. return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/app/.heroku/python/lib/python2.7/site-packages/django/db/models/query.py" in get
387. self.model._meta.object_name
Run Code Online (Sandbox Code Playgroud)
Exception Type: DoesNotExist at /accounts/register/
Exception Value: Site matching query …Run Code Online (Sandbox Code Playgroud) 最近我使用Flask和sympy库开发了一个Web应用程序.用户在textarea中输入他的等式,Flask将其作为字符串取代.我想通过使用sympy函数solve()来计算这个等式的结果.但为此我必须将此字符串转换为sympy表达式.我怎么能这样做?
`
from flask import Flask,request,render_template,flash
from sympy import *
from sympy.parsing.sympy_parser import *
x = symbols('x')
app = Flask(__name__)
app.secret_key = 'mysecretkey'
def calculate_():
first_eq = request.form['first_eq']
first_eq2= parse_expr(first_eq)
result = solve(first_eq2)
return result
@app.route("/",methods=['GET', 'POST'])
def myGet():
return render_template("my-form.html")
@app.route("/myPost/",methods=['GET', 'POST'])
def myPost():
answer = request.form['answer']
result_of_answer=solve(Eq(answer),x)
result = calculate_()
try:
if result == result_of_answer:
flash("you got it!")
else:
flash("no, it's wrong")
return render_template("my-form.html")
except:
flash("sorry, wrong type. Try again!")
return render_template("my-form.html")
if __name__ == '__main__':
app.run()`
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 django Rest-auth库来实现注册。我遵循了安装和使用指南中的每一条说明,包括带有自定义用户序列化程序的部分。问题就从这里开始了。我们注册一个新用户,确认电子邮件,当我尝试更新用户时,我收到相同的错误:
“RelatedObjectDoesNotExist at /rest-auth/user/ 用户没有用户配置文件。”
我不知道如何进行注册以同时为他创建用户和个人资料。我知道这个问题以前已经被问过,但我没有找到任何可以解释为什么会发生这种情况的内容。我正在寻找使用 django-rest-auth 和自定义用户模型进行注册的简单工作示例
模型.py:
class UserProfile(models.Model):
user = models.OneToOneField(User, primary_key=True, related_name='profile')
tagline = models.CharField(max_length=140, null=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
@receiver(post_save, sender=User)
def create_profile_for_user(sender, instance=None, created=False, **kwargs):
if created:
UserProfile.objects.get_or_create(user=instance)
@receiver(pre_delete, sender=User)
def delete_profile_for_user(sender, instance=None, **kwargs):
if instance:
user_profile = UserProfile.objects.get(user=instance)
user_profile.delete()
Run Code Online (Sandbox Code Playgroud)
序列化器.py
class UserSerializer(UserDetailsSerializer):
curriculumVitaeLink = serializers.CharField(source="userprofile.curriculumVitaeLink", required=False)
class Meta(UserDetailsSerializer.Meta):
fields = UserDetailsSerializer.Meta.fields + (
'curriculumVitaeLink'
)
def update(self, instance, validated_data):
profile_data = validated_data.pop('userprofile', {})
curriculumVitaeLink = profile_data.get('curriculumVitaeLink') …Run Code Online (Sandbox Code Playgroud)