Похоже, вы не звоните checkurl
, поэтому, когда вы делаете if url is not None and url != '':
, переменная url
еще не определена.
вам просто нужно добавить url = checkurl()
перед этой строкой I подумайте.
Однако вам нужно будет передать request
этой функции вместо self
, насколько я могу судить по опубликованному вами коду, checkurl
, похоже, не быть методом в классе, и вы используете функциональные представления для представления tests
.
Итак, checkurl
будет:
def checkurl(request):
if request.method == 'POST' and 'url' in request.POST:
url = request.POST.get('url', '')
if not url.startswith('http://') and not url.startswith('https://'):
url = "https://" + url
return url
Обратите внимание, что отступ return url
. Это так, что url
возвращается только если он у нас есть. В вашей текущей функции checkurl
, если if request.method == 'POST' and 'url' in request.POST:
равно false, вы будете пытаться вернуть переменную, которая не существует (она определена только в области действия оператора if). Так что теперь функция просто вернет None
, если это условие не будет выполнено.
Тогда вам просто нужно импортировать эту функцию в ваш файл views.py
(если он находится в отдельном файле) и вызвать его выше это if
заявление:
url = checkurl(request)
if url is not None and url != '':
...