Для практики я написал бота, использующего Selenium для Instagram, для автоматического выполнения каких-то задач, а теперь, чтобы попрактиковаться, я хотел бы создать простую веб-страницу, с помощью которой можно управлять моим ботом (например, запуск / остановка и некоторые параметры).
Я написал базовый код на Django, он работает, но ... Обычно, когда def runInstabot(request)
запускается, он ожидает завершения функций Selenium (bot.login() and bot.search()
) и затем возвращает страницу. Как сделать так, чтобы он возвращал страницу, и в то же время функции Selenium будут работать или, что еще лучше, сначала вернет страницу, а затем запустится сценарий селена?
т.е. чтобы быть более точным:
Я хотел бы ввести некоторые данные (пока для входа в систему и пароль, но позже немного больше), тогда он будет отображаться для следующей страницы и в то же время / или следующий bot.login() and bot.search()
Запускает
views.py:
from django.shortcuts import render
from django.shortcuts import HttpResponse
from django.http import HttpResponseRedirect
from bott.forms import LoginInstagramForm
from django.views.generic.edit import FormView
from instagram.bot import Instagram
bot = Instagram()
class InstabotView(FormView):
template_name = 'instabot.html'
form_class = LoginInstagramForm
success_url = '/runinstabot/'
def form_valid(self,form):
form.clean_instagram()
return super().form_valid(form)
def runInstabot(request):
print('Welcome here')
if request.method == 'POST':
runInstabot.login = request.POST.get('login')
runInstabot.password = request.POST.get('password')
form = LoginInstagramForm(request.POST or None)
if form.is_valid():
bot.login(runInstabot.login, runInstabot.password)
bot.search()
return render(request, 'youbot.html')
else:
form = LoginInstagramForm()
forms.py
from django import forms
from django.contrib.auth import get_user_model
from django.contrib.auth.models import User
class LoginInstagramForm(forms.Form):
login = forms.CharField(label='login')
password = forms.CharField(widget=forms.PasswordInput)
urls.py
from django.conf.urls import url
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
from .views import home_page, main_page
from instagram.views import InstabotView, runInstabot
urlpatterns = [
url(r'^$', home_page, name='home'),
url(r'^main/', main_page, name='main'),
url(r'^instabot/', InstabotView.as_view(), name='instabot'),
url(r'^runinstabot/', runInstabot, name='runinstabot'),
url(r'^admin/', admin.site.urls),
]
template:
<form action="/runinstabot/" method="post" name='btn'>
{% csrf_token %}
{{ form.login }}
{{ form.password }}
<input type="submit" value="Submit">
</form>