I have 3 functions. Each of them has the same line of code:
if request.method == "POST" and 'url' in request.POST:
Here are the functions:
def checkurl(request):
if request.method == "POST" and 'url' in request.POST:
url = request.POST.get('url', '')
url_response = ""
if not url.startswith('http://') and not url.startswith('https://'):
url_get = "http://" + url
url_response = requests.get(url_get, headers=headers, allow_redirects=False)
url_status_code = url_response.status_code
if url_status_code == 200:
url = url_get
return url
else:
url = "https://" + url
return url
return url
def netloc(request):
url = checkurl(request)
global url_scheme
global url_port
global url_netloc
global url_path
if request.method == "POST" and 'url' in request.POST:
url_parsed = urlparse(url)
url_scheme = url_parsed.scheme
url_port = url_parsed.port
url_netloc = url_parsed.netloc
if url_netloc.startswith('www.'):
url_netloc = url_netloc.replace('www.', '')
if url_netloc.endswith('/'):
url_netloc = url_netloc.replace('/', '')
return url_scheme, url_port, url_netloc
def tests(request):
if request.method == "POST" and 'url' in request.POST:
url = checkurl(request)
netloc(request)
var = {
'url':url,
'url_scheme':url_scheme,
'url_port':url_port,
'url_netloc':url_netloc,
}
return render(request, 'apptests/shots.html', var)
else:
return render(request, 'apptests/shots.html')
I do not want to repeat the same line of code in each function and want to remove it and put it aside before these 3 functions. But I cannot do it
Please help