Python Django-从模板检索api url并传递到视图

Python Django-从模板检索api url并传递到视图,python,django,api,templates,Python,Django,Api,Templates,我正在使用Cryptocompare.com api从CryptoCurrences world加载新闻。在模板中,我循环浏览它,并在主页上显示它。我想添加一个功能,如果你点击“发送”按钮,它会向你发送一封包含你刚才点击的新闻链接的电子邮件。最好的方法是什么?我试过了,但我不知道如何将单击的元素与视图中的url链接起来 def home(request): # Grab Crypto News api_request = requests.get('https://min-api

我正在使用Cryptocompare.com api从CryptoCurrences world加载新闻。在模板中,我循环浏览它,并在主页上显示它。我想添加一个功能,如果你点击“发送”按钮,它会向你发送一封包含你刚才点击的新闻链接的电子邮件。最好的方法是什么?我试过了,但我不知道如何将单击的元素与视图中的url链接起来

def home(request):
    # Grab Crypto News
    api_request = requests.get('https://min-api.cryptocompare.com/data/v2/news/?lang=EN')
    api = json.loads(api_request.content)
    return render(request, 'crypto/crypto_home.html', {'api': api})

def SendLink(request):
    if request.method == 'POST':
        subject = 'Link to crypto news'
        from_email = 'test@gmail.com' 
        message = 'Hello {}, here is your link:'.format(request.user) 
        to_email = [request.user.email]

        send_mail(
          subject,
          message,
          from_email,
          to_email
        )
        return HttpResponseRedirect(reverse('crypto-home'))
模板:

    {% for x in api.Data %}
        <div class='col-sm'>
            <div class="card">
                <img class="card-img-top" src="{{ x.imageurl }}" alt="{{ x.source }}">
                <div class="card-body">
                    <h5 class="card-title">{{x.title}}</h5>
                    <p class="card-text">{{ x.body|safe }}.</p>
                    <div class="btn-group btn-group-sm" role='group'>
                        <a href="{{x.url}}" target="_blank" class="btn btn-primary">Read More</a>
                        <form method="post" action="{% url 'send_link' %}">
                            {% csrf_token %}
                            <button id="{{x.id}}" target="_blank" class="btn btn-primary">Send to e-mail</button>
                        </form>
                    </div>
                </div>
            </div>
        </div>
    {% endfor %}    
{%for api.Data%中的x}
{{x.title}}

{{x.body | safe}

{%csrf_令牌%} 发送电子邮件 {%endfor%}

我想将模板“x.url”的链接添加到视图,以便能够将链接添加到消息变量。我还试图通过新闻ID将其链接,但我无法将其传递给视图。你知道我怎么做吗?谢谢

看起来您需要在表单中添加一个隐藏字段,以便将URL传递到视图:

<input type="hidden" id="URL" name="URL" value="{{x.url}}">


一旦您的视图中有了该变量,您应该能够将其添加到电子邮件模板中。

以及如何访问视图中的“值”?我可以通过以下方式在视图中访问它:request.POST['URL']