Я пытаюсь изменить статус (от Authenticate to Authenticated) и цвет (от значения по умолчанию к успеху) на кнопке начальной загрузки всякий раз, когда мой Soundcloud API аутентифицировал своего пользователя и перенаправлен обратно на мой сайт.Django: изменить статус и цвет в кнопке начальной загрузки
Вот мой класс Soundcloud в views.py
:
class SoundcloudAccountView(PodcastRequiredMixin, View):
form_class = SoundcloudAccountForm
template_name = 'pod_funnel/forms_soundcloud_account.html'
def get(self, request, *args, **kwargs):
# We check if we have a Soundcloud config for this users podcast, if not
# redirect directly to Oauth 2, otherwise show form
soundcloud_config_id = self.podcast.soundcloud_account_id
if soundcloud_config_id is None:
soundcloud_config = SoundcloudConfig(client=self.client)
soundcloud_config.save()
self.podcast.soundcloud_account = soundcloud_config
self.podcast.save()
else:
soundcloud_config = self.podcast.soundcloud_account
if not soundcloud_config.is_authenticated():
client_id = settings.PODFUNNEL_SOUNDCLOUD_APP_CLIENT_ID
client_secret = settings.PODFUNNEL_SOUNDCLOUD_APP_CLIENT_SECRET
redirect_uri = settings.PODFUNNEL_SOUNDCLOUD_APP_AUTH_CALLBACK
api = SoundcloudAPI(soundcloud_config, request, client_id, client_secret, redirect_uri)
request_url_response = api.get_authentication_url()
if request_url_response.success and request_url_response.redirect_url:
return HttpResponseRedirect(request_url_response.redirect_url)
initial_values = {'name': soundcloud_config.screen_name}
form = self.form_class(initial=initial_values)
return render(request, self.template_name, {'form': form})
# if we get a post request on this view, it means the user wants to reauthenticate or delete.
# Delete current soundcloud config and call get for reauthenticate otherwise back to accounts.
def post(self, request, *args, **kwargs):
soundcloud_config_id = self.podcast.soundcloud_account_id
if soundcloud_config_id is not None:
SoundcloudConfig.objects.filter(id=soundcloud_config_id).delete()
isDelete = request.POST.get('action', None) == 'Delete'
if isDelete:
return HttpResponseRedirect(reverse('podfunnel:accounts'))
return self.get(request, args, kwargs)
class SoundcloudAuthenticationView(LoginRequiredMixin, RedirectView):
pattern_name = 'podfunnel:soundcloudaccount'
def get(self, request, *args, **kwargs):
soundcloud_config_id = self.request.session.get('soundcloud_config_id')
self.request.session.delete('soundcloud_config_id')
soundcloud_config = get_object_or_404(SoundcloudConfig, id=soundcloud_config_id)
# Now we need to exchange the tokens
client_id = settings.PODFUNNEL_SOUNDCLOUD_APP_CLIENT_ID
client_secret = settings.PODFUNNEL_SOUNDCLOUD_APP_CLIENT_SECRET
redirect_uri = settings.PODFUNNEL_SOUNDCLOUD_APP_AUTH_CALLBACK
api = SoundcloudAPI(soundcloud_config, request, client_id, client_secret, redirect_uri)
exchangeTokenResponse = api.get_tokens_for_authentication_callback(self.request)
# If succesfull update 'soundcloud_config' info
# Otherwise we redirect without saving.
if exchangeTokenResponse.success:
soundcloud_config.access_token = exchangeTokenResponse.access_token
response = api.me() # Get name
if response.success:
soundcloud_config.screen_name = response.resource.get('username')
soundcloud_config.save()
return super(SoundcloudAuthenticationView, self).get(request, *args, **kwargs)
А вот код в шаблоне, где я хочу кнопку, чтобы изменить свой цвет и состояние всякий раз, когда пользователь успешно перенаправлен из Soundcloud:
<div class="col-md-4 text-center">
<br>
<a class="btn btn-warning box-shadow--6dp" href="{% url 'podfunnel:soundcloudaccount' %}" role="button">Authenticate</a>
<br>
</div>
Любое предложение о том, как я могу это реализовать? Могу ли я сделать это без внедрения jQuery
?
бы оценить любое предположение