问题
When a user visits our site and signs up, how can I capture which website they came from?
Be it search, a PR website, etc. I don't care what page from our site they visited, I just want to know which marketing efforts are giving us the most signups.
I know Google Analytics can probably do this but I'd like to have something internal for reference as well.
回答1:
request.referrer contains the URL the request came from, although it might not be sent by the client for various reasons.
The attribute takes its value from the Referer
(not a typo!) header:
referrer = request.headers.get("Referer")
or, using the Flask shortcut:
referrer = request.referrer
See this tutorial for an example.
回答2:
Thanks to the accepted answer, I set up my app to capture an external referrer and store it in the session
. Then when the user signs up I save that value with the user.
from flask import request, g
from werkzeug.urls import url_parse
def referral():
url = request.referrer
# if domain is not mine, save it in the session
if url and url_parse(url).host != "example.com":
session["url"] = url
return session.get("url")
@app.before_request
def before_request():
g.user = current_user
g.url = referral()
来源:https://stackoverflow.com/questions/28593235/get-referring-url-for-flask-request