Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django等待完成Selenium def(),然后返回页面-如何更改该页面?_Python_Django_Selenium_Django Forms_Django Views - Fatal编程技术网

Python Django等待完成Selenium def(),然后返回页面-如何更改该页面?

Python Django等待完成Selenium def(),然后返回页面-如何更改该页面?,python,django,selenium,django-forms,django-views,Python,Django,Selenium,Django Forms,Django Views,为了练习,我已经使用Selenium For Instagram编写了一个机器人程序来自动完成一些工作,现在为了进一步练习,我想创建一个简单的网页来控制我的机器人程序(如启动/停止和一些选项) 我已经用Django编写了基本代码,它可以工作,但是。。。通常,当def runInstabot(请求)启动时,它会等待Selenium函数(bot.login()和bot.search())完成,然后返回页面。如何确保它将返回页面,同时Selenium函数将起作用,或者更好,首先它将返回页面,然后Sel

为了练习,我已经使用Selenium For Instagram编写了一个机器人程序来自动完成一些工作,现在为了进一步练习,我想创建一个简单的网页来控制我的机器人程序(如启动/停止和一些选项)

我已经用Django编写了基本代码,它可以工作,但是。。。通常,当
def runInstabot(请求)
启动时,它会等待Selenium函数(
bot.login()和bot.search()
)完成,然后返回页面。如何确保它将返回页面,同时Selenium函数将起作用,或者更好,首先它将返回页面,然后Selenium脚本启动

i、 e.更准确地说: 我想输入一些数据(现在是登录和密码,但以后会更多),然后它将在下一页呈现,同时/或下一页
bot.login()和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()



模板:
{%csrf_令牌%}
{{form.login}
{{form.password}}

Instagram有一个API,你应该使用它,而不是试图用selenium为前端供电。是的,我知道,但我更喜欢使用selenium,因为我希望将来使用它,可能我也会遇到同样的问题
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>