【问题标题】:Input a link to submit a form and then extract data from that link - FLASK输入链接以提交表单,然后从该链接中提取数据 - FLASK
【发布时间】:2021-07-19 17:58:27
【问题描述】:

我在我的应用程序中设置了一个小部分,用户可以在其中添加链接并提交/申请工作。然后我想从用户输入的链接中提取信息并将其保存在我的数据库中。但是,我很困惑。 我似乎无法让 requests.get 识别输入,因为它是一个链接。 另外,我不确定如何将信息保存在数据库的特定列中。

HTML 表单是这样的:

<!DOCTYPE html> {% extends "layout.html" %} {% block content %}
<article class="media content-section">
    <h1 class="article-content">{{ current_post.job_title }}</h1>
    <h5 class="article-content">{{ current_post.company}}</h5>
    <p class="article-content">{{ current_post.sector }}</p>
    <p class="article-content">{{ current_post.location }}</p>
    <p class="article-content">{{ current_post.employment_type }}</p>
    <p class="article-content">{{ current_post.description }}</p>
    <p class="font-weight-bold">Requirements:</p>
    <ul>
        <li class="article-content">{{ current_post.requirement_1 }}</li>
        <li class="article-content">{{ current_post.requirement_2 }}</li>
        <li class="article-content">{{ current_post.requirement_3 }}</li>
        <li class="article-content">{{ current_post.requirement_4 }}</li>
        <li class="article-content">{{ current_post.requirement_5 }}</li>
        <li class="article-content">{{ current_post.requirement_6 }}</li>
    </ul>
    </li>
    <p>To apply for this job please submit your Badgr backpack link</p>
    <form method="POST" class="row g-3" action="/apply">
        <div class="col-auto">
            <label for="url" class="visually-hidden">Backpack Link</label>
            <input type="Link" class="form-control" name="url" id="url" placeholder="Backpack Link">
        </div>
        <div class="col-auto">
            <button type="submit" class="btn btn-primary mb-3">Apply</button>
        </div>
    </form>
</article>
{%endblock content %}

我的 py 文件中与此相关的部分如下:

变量dataskills中的信息就是我要存入数据库的信息。

@app.route("/apply", methods=['GET', 'POST'])
@login_required
def apply():
    if request.method == 'POST':
        r = requests.get(url)
        jsondata = r.json()
        listed = []
        for song in jsondata['badges']:
            new = listed.append(song['badge'])
        for b in listed:
            r = requests.get(b)
            text_json = json.loads(r.text)
            dataskills = text_json['name']
        ap = Applicant(skills = dataskills) #skills is the column within the database I want to save info into
        db.session.add(ap)
        db.session.commit()      
        flash('Congratulations you have successfully applied for this job!', 'success')
    return redirect(url_for('jobs'))

【问题讨论】:

  • r = requests.get(url)url从哪里来?

标签: html mysql api flask url


【解决方案1】:

我没有正确理解您的代码,但我发现了您的问题,您没有从form 获得url

你可以这样做从form获取数据:

url=request.form["url"]

语法是基本的,request.form[&lt;string from name&gt;]。在您的情况下,&lt;input type="Link" class="form-control" name="url" id="url" placeholder="Backpack Link"&gt; 的名称中有“url”。所以,你的代码变成request.form["url"]

完整代码:

@app.route("/apply", methods=['GET', 'POST'])
@login_required
def apply():
    if request.method == 'POST':
        url=request.form["url"]
        r = requests.get(url)
        jsondata = r.json()
        listed = []
        for song in jsondata['badges']:
            new = listed.append(song['badge'])
        for b in listed:
            r = requests.get(b)
            text_json = json.loads(r.text)
            dataskills = text_json['name']
        ap = Applicant(skills = dataskills) #skills is the column within the database I want to save info into
        db.session.add(ap)
        db.session.commit()      
        flash('Congratulations you have successfully applied for this job!', 'success')
    return redirect(url_for('jobs'))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-22
    • 2019-08-25
    • 1970-01-01
    • 1970-01-01
    • 2019-12-17
    • 1970-01-01
    • 1970-01-01
    • 2015-01-11
    相关资源
    最近更新 更多