نمایش نتایج 1 تا 2 از 2

نام تاپیک: مشکل در واکشی دیکشنری

  1. #1

    مشکل در واکشی دیکشنری

    سلام
    من این کدهارو دارم:

     

    def write_to_file(data):
    with open('database.txt', mode='a') as database:
    email = data["email"]
    subject = data["subject"]
    message = data["message"]
    file = database.write(f'\n{email},{subject},{message}')
    @app.route('/submit_form', methods=['POST', 'GET'])
    def submit_form():
    if request.method == 'POST':
    data = request.form.to_dict
    write_to_file(data)
    #print(f'type of data is: {type(data)}')
    print(data)
    return redirect('/thankyou.html')
    else:
    return 'err'


    این کد باید کار کنه اما این اررو میده:


    > TypeError: 'method' object is not subscriptable


    و در فایل اینو برام مینوسه:


    > <bound method MultiDict.to_dict of ImmutableMultiDict([('email', 'ex@ex.com'), ('subject', 'ex'), ('message', 'ex')])>


    وقتی نوع متغیر data رو برمیگردونم اینو نشون میده:
    > <class 'method'>

    وقتی محتویات متغیر data رو چاپ میکنم اینو نشون میده:
    > {'email': 'ex@ex.com', 'subject': 'ex', 'message': 'ex'}
    ex مقادیری هست ک خودم دادم.

    اما به این محتویات نمیتونم دسترسی داشته باشم


    وقتی براکت رو به پرانتز تغییر میدم :


    email = data("email")
    subject = data("subject")
    message = data("message")



    کار میکنه اما به ازای هر المنت کل مقادیر دیکشنری رو چاپ میکنه:
    > {'email': 'ex@ex.com', 'subject': 'ex', 'message': 'ex'},{'email': 'ex@ex.com', 'subject': 'ex', 'message': 'ex'},{'email': 'ex@ex.com', 'subject': 'ex', 'message': 'ex'}

    لطفا راهنمایی کنید

  2. #2
    کاربر جدید
    تاریخ عضویت
    شهریور 1401
    محل زندگی
    بهار شمالی
    پست
    2

    نقل قول: مشکل در واکشی دیکشنری

    ببین راه حلو خودت گفتی
    براکت --> پرانتز
    استفاده از <regex> در Output
    تنظیم کن که براکت و استرینگ رو پاک کنه

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •