Get referring URL for Flask request

前端 未结 2 1929
心在旅途
心在旅途 2021-01-01 15:12

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

相关标签:
2条回答
  • 2021-01-01 15:22

    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.

    0 讨论(0)
  • 2021-01-01 15:30

    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()
    
    0 讨论(0)
提交回复
热议问题