Я пытаюсь узнать, как использовать API в Django, и я хочу вернуть некоторые простые данные из одного на веб-странице в html. API является Mozscape и при его запуске в терминале можно получить оценку веб-сайта из 100 так:Как вернуть данные из API в Django?
from mozscape import Mozscape
client = Mozscape(
'api_user_id',
'secret_key')
url = 'http://www.google.com'
get_da = client.urlMetrics(url, cols=68719476736)
print(get_da)
и это выводит следующее
{u'pda': 100}
«100» все Я хочу туда. Я хочу, чтобы пользователю ввести URL в форму на странице в Django и получить этот счет Int назад, так что я сделал следующие модели, виды и формы
class DomainAuthority(models.Model):
url = models.URLField(max_length=300)
def __str__(self):
return self.url
class Meta:
verbose_name = 'Domain'
verbose_name_plural = 'Domains'
views.py
def DomainAuthorityView(request):
form = DomainAuthorityForm(request.POST or None)
if form.is_valid():
new_domain = form.save(commit=False)
new_domain.save()
return render(request, 'domain_authority.html', {'form': form})
forms.py
class DomainAuthorityForm(forms.ModelForm):
class Meta:
model = DomainAuthority
fields = ['url']
поэтому у меня есть вид работы и когда URL вводится в HTML-форм его сохранить в админ интерфейсе, но то, что я не знаю, как сделать теперь, как передать этот адрес в поле API Mozscape, чтобы я n верните счет.
Я взглянул на инфраструктуру отдыха Django и установил ее, а затем выполнил несколько быстрых обучающих видеороликов на Youtube и других местах, но в этих примерах они берет сохраненные объекты Django, такие как сообщения в блогах, и возвращают их как данные JSON, которые не являются Что я хочу сделать.
Я пытался импортировать в API в файл просмотров, а затем добавить эту строку в то посмотреть
get_da = client.urlMetrics(new_domain, cols=68719476736)
, но затем я получаю эту ошибку после ввода URL в форму на веб-странице
<DomainAuthority: https://www.google.com> is not JSON serializable
Что мне нужно сделать, чтобы передать пользователю введенные URL-адреса API и вернуть правильный ответ на веб-странице?
благодаря
EDIT - ОБНОВЛЕНО VIEW от 19 августа
def DomainAuthorityView(request):
form = DomainAuthorityForm(request.POST or None)
if form.is_valid():
new_domain = form.save(commit=False)
new_domain.save()
response = requests.get(new_domain.url, cols=68719476736)
#response = requests.get(client.urlMetrics(new_domain.url, cols=68719476736))
json_response = response.json()
score = json_response['pda']
return render(request, 'domain_authority_checked.html', {'score': score})
else:
return render(request, 'domain_authority.html', {'form': form})
так что теперь он должен перенаправить после успешного завершения формы с URL и URL передается API, чтобы получить счет и переадресовывает к «domain_authority_checked.html» именно с этой
{{ score }}
так у меня есть два результата здесь, если я перехожу в «client.urlMetrics» в ответ я могу загрузить «domain_auth ority.html», но после того, как URL-адрес его ввода в виде страница ошибки возвращается с этой
InvalidSchema at /domainauthority/
No connection adapters were found for '{'pda': 100}'
если я не пройти„client.urlMetrics“в ответ, то Django не знает, что„перевалы“есть и возврат это
TypeError at /domainauthority/
request() got an unexpected keyword argument 'cols'
Причину ошибки заключается в том, что 'new_domain' является экземпляром' DomainAuthority', а не строкой, которая является функцией 'urlMetrics()'. Вместо этого вы должны называть его 'urlMetrics (new_domain.url)'. Теперь вы хотите сохранить результат вызова в своей базе данных или просто использовать его в представлении? – nephtes
спасибо, я собираюсь попробовать ответ ниже, чтобы ответить на ваш вопрос Id, как бы попробовать оба на самом деле, чтобы сохранить счет в db, а также использовать его в представлении –