小编Jas*_*ins的帖子

使用Requests和Django从脚本登录网页

我在Django中编写了一个Web应用程序.我需要将一些数据发布到python脚本的表单中.禁用登录时,帖子(r2)可正常工作.我有正确的登录请求(r1),但它现在给我一个404错误的表单帖子(r2).登录似乎没有转移到第二个请求.csrftoken和sessionid被硬编码用于测试,因为它没有识别它们.相关代码(删除了网址):

url_login='../pecasRunLog/accounts/login/'
url_add_run='../pecasRunLog/model/'+region+'/add_run/'

client = requests.session()
client.get(url_login)
csrftoken = client.cookies['csrftoken']
login_data = {'username':user,'password':password, 'csrfmiddlewaretoken':csrftoken, 'next': '/pecasRunLog/'}
r1=client.post(url_login,data=login_data)

payload={'model_region':region_id,'scendir':scendir, 'mapit_scenario': schema, 'run_name':schema+timestamp, 'run_computer_name':os.environ['COMPUTERNAME'], 'run_computer_ip':get_lan_ip(), 'declared_user':declared_user, 'logged_in_user':getpass.getuser(), 'sd_schema':schema, 'sd_database':database, 'sd_host':get_lan_ip(), 'sd_port':pgport,'mapit_schema':schema, 'mapit_database':database, 'mapit_host':get_lan_ip(), 'mapit_port':pgport,'start_date':start_date, 'start_time':start_time, 'end_date':end_date, 'end_time':end_time,'logged_manually':3, 'csrfmiddlewaretoken':csrftoken, 'sessionid':'jtvv50cs3iyo9bjthbr2diujfmrrlsnf'}
r2=requests.post(url_add_run,payload)
Run Code Online (Sandbox Code Playgroud)

python django django-authentication python-requests

8
推荐指数
2
解决办法
4915
查看次数

将动态Javascript变量传递给Django/Python

我看了很多答案和其他网站,但没有人回答我的具体问题.我有一个带有"+"和" - "按钮的网页,它应该增加一个名为"pieFact"的变量.必须动态更新此变量,而无需刷新页面.然后每次更改值时都应将其传递给我的Django视图.这将用于更新Web地图中饼图的大小.我有以下内容:

<button type="button" id=bttnMinus onclick="pieFact=pieFact*0.9">-</button>
<button type="button" id=bttnPlus onclick="pieFact=pieFact*1.1">+</button></td> 
<script type="text.javascript">
    var pieFact=0;
</script>
Run Code Online (Sandbox Code Playgroud)

如何将"pieFact"的值传递给Django?基于我有限的知识,我想我可能不得不使用AJAX post/get.

javascript python django ajax jquery

7
推荐指数
1
解决办法
2万
查看次数

将 Python 脚本作为 Celery 任务执行

我正在尝试使用 Django 将 python 脚本作为芹菜任务运行。我遇到的问题是,一旦脚本开始运行,任务就认为它已完成。我最初在 tasks.py 文件中使用 subprocess.popen(),但意识到这意味着一旦发出 popen() 命令,任务就会完成。我修改了我的 tasks.py 代码以调用运行脚本的 python 脚本中的函数;但是,这仍然会像任务立即完成一样执行。我很困惑,因为在花中它说任务已完成,但在芹菜日志中,它正在输出我正在运行的脚本中定义的日志数据。我找到了以下相关帖子。我相信我正在遵循它的建议,从tasks.py 执行一个python 函数。

任务.py:

def exe(workDir, cancelRun):
    sys.path.append(workDir)
    import run

    if cancelRun=='True':
        task_id=exe.request.id
        revoke(task_id,terminate=True)
    else:
        run.runModel(workDir)
        task_id=exe.request.id
        return task_id
Run Code Online (Sandbox Code Playgroud)

runModel 函数代码:

def runModel(scendir):
    fullpath=scendir+'/run.py'
    os.chdir(scendir)
    p=Process(target=myMain,args=(scendir,))
    p.start()
    p.join()
Run Code Online (Sandbox Code Playgroud)

celery celery-task django-celery

5
推荐指数
1
解决办法
3522
查看次数

UnicodeDecodeError:'ascii'编解码器无法解码位置0的字节0x96

我查看了类似问题的一些答案,但似乎无法看到我的代码中出现错误的位置.当我尝试运行芹菜时发生错误:celery –A runLogProject worker –loglevel=INFO.我注释掉了与Celery相关的所有代码,它也给出了同样的错误.我也尝试重新安装芹菜.我不知道还有什么可以尝试的.这是追溯:

 C:\Python27\lib\site-packages\celery\bin\celery.py:803: UnicodeWarning: Unicode equal comparison failed to convert both
arguments to Unicode - interpreting them as being unequal
  if len(argv) > 1 and 'worker' in argv[0:3]:
C:\Python27\lib\site-packages\celery\bin\celery.py:765: UnicodeWarning: Unicode equal comparison failed to convert both
arguments to Unicode - interpreting them as being unequal
  if 'multi' in argv[1:3]:  # Issue 1008
C:\Python27\lib\site-packages\celery\bin\base.py:398: UnicodeWarning: Unicode equal comparison failed to convert both ar
guments to Unicode - interpreting them as being unequal
  if '--version' in …
Run Code Online (Sandbox Code Playgroud)

python django celery python-unicode

3
推荐指数
1
解决办法
1835
查看次数

在Postgresql中复制:解释为相对路径的绝对路径

我在Django应用程序中运行此语句:

c = connections['default'].cursor()
    query="copy (select * from analysis.\"{0}\") to STDOUT DELIMITER ',' CSV HEADER;".format(view_name)
            with open(csvFile,'w') as f:
                c.copy_expert(query,f)
            f.close()
Run Code Online (Sandbox Code Playgroud)

它不会创建正确的csv文件.某些值似乎位于错误的列中.我试图通过在POSTGRESQL中运行它来测试SQL语句:

 copy (select * from analysis."S03_2005_activity_140807_153431_with_geom") to 'C:/djangoProjects/web_output/csvfiles/S03_2005_activity_140807_153431_with_geom.csv' DELIMITER ',' CSV HEADER;
Run Code Online (Sandbox Code Playgroud)

它给了我:"错误:COPY不允许相对路径存档".我调查了这个问题,它似乎通常是两个问题之一:1.混淆'\'和'/'.我的斜杠应该是正确的.2.服务器位于不同的计算机上.我认为这可能是我的问题,因为数据库位于外部计算机上,但我在Postgresql中有连接.它也是从Django运行所以我不确定为什么它不能从PG Admin工作.

django postgresql psycopg2

2
推荐指数
1
解决办法
4426
查看次数