标签: django-shell

如何从Django shell执行Python脚本?

我需要从Django shell执行Python脚本.我试过了:

./manage.py shell << my_script.py
Run Code Online (Sandbox Code Playgroud)

但它没有用.它只是在等我写点什么.

python django django-shell

224
推荐指数
12
解决办法
19万
查看次数

如何从django shell创建用户

当我从django-admin用户密码创建用户时,会加密.但是当我从django shell创建用户时,user-pasword以纯文本格式保存.示例:

{
    "date_joined": "2013-08-28T04:22:56.322185",
    "email": "",
    "first_name": "",
    "id": 5,
    "is_active": true,
    "is_staff": false,
    "is_superuser": false,
    "last_login": "2013-08-28T04:22:56.322134",
    "last_name": "",
    "password": "pbkdf2_sha256$10000$iGKbck9CED0b$6hWrKYiMPNGKhcfPVGal2YP4LkuP3Qwem+2ydswWACk=",
    "resource_uri": "/api/v1/user/5/",
    "username": "user4"
},
{
    "date_joined": "2013-08-29T01:15:36.414887",
    "email": "test@ophio",
    "first_name": "",
    "id": 6,
    "is_active": true,
    "is_staff": true,
    "is_superuser": true,
    "last_login": "2013-08-29T01:15:36.414807",
    "last_name": "",
    "password": "123test",
    "resource_uri": "/api/v1/user/6/",
    "username": "test3"
} 
Run Code Online (Sandbox Code Playgroud)

我正在尝试为一个简单的博客应用程序制作REST样式api:当我尝试通过post请求[通过传递JSON]插入用户时,密码保存为纯文本.如何覆盖此行为.

python django shell django-shell

40
推荐指数
4
解决办法
6万
查看次数

通过django shell保存图像/文件

我试图通过django shell保存图像文件.

model.py是:

class user(models.Model):
    name=models.CharField(max_length=20)
    pic=models.ImageField()
Run Code Online (Sandbox Code Playgroud)

使用admin和表单可以很好地使用Everyhing,但我想使用shell保存图像:

就像是

>>>user1=User(name='abc', pic="what to write here")
Run Code Online (Sandbox Code Playgroud)

python django django-models django-file-upload django-shell

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

从命令行执行Django Shell命令

我想仅通过命令行通过Django的manage.py shell函数执行命令

例如

manage.py shell -c "from myapp import models; print models.MyModel.some_calculation()"
Run Code Online (Sandbox Code Playgroud)

你可以将-c选项与普通的Python解释器一起使用

例如

python -c "print 'hello world'"
Run Code Online (Sandbox Code Playgroud)

但是,我没有看到等效的-c选项manage.py shell.有没有办法做到这一点?

python django django-shell

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

Django:在shell中模拟HTTP请求

我刚刚了解到,使用Rails可以在控制台中用几行代码模拟HTTP请求.

查看:http://37signals.com/svn/posts/3176-three-quick-rails-console-tips("深入了解您的应用"部分).

用Django有类似的方法吗?会很方便的.

django django-shell

18
推荐指数
3
解决办法
2万
查看次数

Windows上的IPython - 无突出显示或自动完成

这对我来说已经是一个长期存在的问题了,但是由于我主要使用Linux开发,所以到目前为止我从未真正关心过这个问题.

Windows上的iPython缺乏各种功能.

我真的很想念颜色 突出 和自动完成.


编辑:通过安装pyreadline修复突出显示

pip安装pyreadline


有人已经处理过这个吗?

python windows django ipython django-shell

14
推荐指数
1
解决办法
4373
查看次数

如何记录通过 Django shell 进行的生产数据库更改

我想自动生成某种日志,记录在生产环境中通过 Django shell 进行的所有数据库更改。

我们使用模式和数据迁移脚本来更改生产数据库,并且它们是版本控制的。因此,如果我们引入一个错误,很容易追踪它。但是,如果团队中的开发人员通过 Django shell 更改数据库,从而引入问题,目前我们只能希望他们记得他们做了什么,或者/并且我们可以在 Python shell 历史记录中找到他们的命令。

例子。我们假设团队中的开发人员通过 Python shell 执行了以下代码:

>>> tm = TeamMembership.objects.get(person=alice)
>>> tm.end_date = date(2022,1,1)
>>> tm.save()
Run Code Online (Sandbox Code Playgroud)

它更改数据库中的团队成员资格对象。我想以某种方式记录下来。

我知道有很多与审计日志记录相关的 Django 包,但我只对 Django shell 触发的更改感兴趣,并且我想记录更新数据的 Python 代码。

所以我想到的问题是:

  • 我可以从 IPython 记录语句,但我如何知道哪一个接触了数据库?
  • 我可以监听pre_save所有模型的信号来了解数据是否发生变化,但我如何知道源是否来自 Python shell?我怎么知道原始的 Python 语句是什么?

python django django-shell audit-logging

9
推荐指数
1
解决办法
1345
查看次数

django shell启动时如何运行任意代码?

这个问题:在Django shell启动时自动导入模型的答案解释了如何在开始时使用shell_plus导入模型,但没有回答如何一般地运行代码.

但有没有一种简单的方法来运行python脚本?

python manage.py shell [or shell_plus] --run=script.py
Run Code Online (Sandbox Code Playgroud)

只需运行脚本就像在shell启动时输入整个内容一样.

我意识到你可以在shell中导入东西,但是它们会被卡在命名空间中.

我认为ipython应该有办法运行脚本,然后将其locals()导入到顶级命名空间.在那种情况下你可以做到%magic script.py,我们只需要一步,这将是好的.

改变你启动shell的方式应该没问题 - 主要目标是能够创建一个在shell启动时运行的文件.

python django debugging django-shell

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

未知命令:shell_plus和--settings

我尝试运行一些

python manage.py shell_plus --notebook --settings=my_app.settings.andi
Run Code Online (Sandbox Code Playgroud)

但它失败了,错误:

Unknown command: 'shell_plus'
Type 'manage.py help' for usage.
Run Code Online (Sandbox Code Playgroud)

我安装了ipython和shell_plus(从我的pip冻结)

django-shell-plus==1.1.5
ipython==1.2.1
Run Code Online (Sandbox Code Playgroud)

怎么处理呢?

python django django-shell

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

在 Django Shell 中获取模型的所有字段

是否可以在 Django Shell 中输出特定模型的所有字段的名称?例如,如何从User模型中获取字段:

>>> from django.contrib.auth.models import User
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过访问models.py适当的应用程序来获取它,但对我来说,在同一位置获取所有应用程序型号的信息会更方便。

django django-models django-shell

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