我知道如何使用tee
写输出(STDOUT
中)aaa.sh
到bbb.out
,同时还在终端显示它:
./aaa.sh | tee bbb.out
Run Code Online (Sandbox Code Playgroud)
我现在如何写STDERR
一个名为的文件ccc.out
,同时还显示它?
我可以在文档中看到
方法is_visible,但我不知道如何使用它.我不断收到错误,例如"is_visible需要一个selenium实例作为第一个参数",还有什么是"定位器"?
任何帮助,将不胜感激.
我正在开发一个Django Web应用程序,其中(除其他外)需要处理使用POST
请求发送的事务状态信息.
除了支付网关支持的HTTP安全性之外,我的视图还会检查request.META['HTTP_REFERER']
条目settings.py
以防止有趣的业务:
if request.META.get('HTTP_REFERER', '') != settings.PAYMENT_URL and not settings.DEBUG:
return HttpResponseForbidden('Incorrect source URL for updating payment status')
Run Code Online (Sandbox Code Playgroud)
现在我想弄清楚如何测试这种行为.
我可以很容易地产生故障; HTTP_REFERER
是(可预测)None
正常的页面加载:
def test_transaction_status_succeeds(self):
response = self.client.post(reverse('transaction_status'), { ... })
self.assertEqual(response.status_code, 403)
Run Code Online (Sandbox Code Playgroud)
但是,如何假冒成功提交?我已经尝试过HTTP_REFERER
进入extra
,例如 self.client.post(..., extra={'HTTP_REFERER': 'http://foo/bar'})
,但这不起作用; 该视图显然仍然看到一个空白标题.
测试客户端是否支持自定义标头?如果没有解决方法吗?我正在使用Django 1.1,如果可能的话,我宁愿不升级.
我正在使用nose(通过django-nose)和coverage插件来检查我的Django项目的测试覆盖率.
我已配置nose以在每次测试运行时生成HTML覆盖率报告:
NOSE_ARGS = [
'--with-coverage',
'--cover-package=foot',
'--cover-html',
'--cover-html-dir=cover',
]
Run Code Online (Sandbox Code Playgroud)
现在,我想禁用每次测试运行后显示的纯文本覆盖率报告; HTML功能更强大,而且格式错误的表格使得很难看到实际的测试输出.似乎也nosetests
没有coverage
这样的选择,或者我也许找不到一个?
我有一个字典,看起来像这样:
d = {'A':110, 'a':100, 'T':50, 't':5}
Run Code Online (Sandbox Code Playgroud)
我想键更改为大写,并结合A+a
和T+t
并添加自己的价值观,使得所得到的字典是这样的:
d = {'A': 210, T: 55}
Run Code Online (Sandbox Code Playgroud)
这是我试过的:
for k, v in d.items():
k.upper(), v
Run Code Online (Sandbox Code Playgroud)
结果是:
('A', 110)
('A', 100)
('T', 50)
('t', 5)
Run Code Online (Sandbox Code Playgroud)
我看起来像元组,但我想在字典中更改它,所以我尝试编写一个函数:
def Upper(d):
for k, v in d.items:
k.upper(), v
return d
Run Code Online (Sandbox Code Playgroud)
但它返回字典不变.
在我将键更改为大写后,我找到了如何在字典中添加键值的解决方案:
dict([(x, a[x] + b[x]) if (x in a and x in b) else (x, a[x]) if (x in a) else (x, b[x])
Run Code Online (Sandbox Code Playgroud)
但首先我需要把钥匙拿到大写!
好吧,我想我一定错过了什么.在settings.py
我看不到网站的绝对网址设置.我看到了MEDIA_URL
.
django-registration
{{ site }}
默认的引用,example.com
但我没有在任何设置中看到它.
如果我想要dev.mysite.com
和mysite.com
独立工作,我需要投入settings.py
什么?
请将此作为考虑问题.也许有人会使用下面的解决方案之一.
我有几个包含ForeignKey(User)
字段的模型.我的基于类的创建视图来自泛型CreateView
.
添加新对象时,有两个选项可以保存关联用户:
通过覆盖form_valid
方法在视图中保存表单; 这不会暴露user_id
(这里没有提到不应该暴露的数据)
class CreateOfferView(CreateView):
model = Offer
form_class = SomeModelFormWithUserFieldExcluded
def form_valid(self, form):
instance = form.save(commit=False)
instance.user = self.request.user
instance.save()
Run Code Online (Sandbox Code Playgroud)将用户ID存储(和公开)的表单保存在隐藏字段中.这是棘手的部分.有更多带有用户字段的模型...所以在创建表单时,我需要用初始(当前登录)用户填充用户字段,并且我还需要隐藏该字段.为此,我用过我的OwnFormMixin
class OwnFormMixin(object):
def get_form(self, form_class):
form = super(OwnFormMixin, self).get_form(form_class)
form.fields['user'].widget = forms.HiddenInput()
def get_initial(self):
initial = super(OwnFormMixin, self).get_initial()
initial['user'] = self.request.user.pk
#I could also do this in get_form() with form.fields['user'].initial
class CreateOfferView(OwnFormMixin, CreateView):
model = Offer
form_class = SomeModelFormWithAllFields
Run Code Online (Sandbox Code Playgroud)还有更多CreateXXXView
使用OwnFormMixin
..
如何在表单中保存用户数据?
隐藏与直接保存在您的视图中?什么是利弊?
我有一个ProductForm
,用户可以添加一个Product
与信息,如数据库title
,price
和condition
.
如何使用当用户提交表单时,title
字段的第一个字母会自动大写?
例如,如果用户在表单中键入"优质床垫",则django将其保存为数据库中的"优质床垫".
仅供参考,我问的原因是因为当我在页面上显示所有产品对象时,Django按标题排序的功能区分大小写.因此,"Bravo","糟糕","惊人"将被分类为"惊人","勇敢","可怕"作为用户时,我们知道这不是按字母顺序排列的.
谢谢您的帮助!
嗨,我收到此错误,因为我在我的附加用户信息模型(user = models.OneToOneField(User)
)中有一个字段,我没有填写注册(因为我想让用户以后再做).
我想知道除了在db中允许空字段之外是否有任何方法可以解决这个问题?
干杯
我正在尝试在由Ractive.js呈现的数据中包含HTML标记(对于自动下标化学符号,以防有人关心),但Ractive只是插入文本而不是创建新的DOM元素.
一个最小的测试用例,改编自60秒的设置指南:
<script id='template' type='text/ractive'>
<p>Hello, {{name}}!</p>
</script>
<script type="text/javscript">
var ractive = new Ractive({
el: 'container',
template: '#template',
data: { name: '<b>world</b>' }
});
Run Code Online (Sandbox Code Playgroud)
正如你在这个JSfiddle中看到的那样,结果Hello, <b>world</b>
不是预期的"Hello,world "
我猜这是与Ractive处理表达式的方式有关...但我还没有达到源有用的意义.
有关如何获得预期行为的任何想法?
我继承了以下 Django 视图代码,由另一个 Web 服务用于提供可下载版本的输出数据:
def index(request):
# ... (snip) ...
data = base64.decodestring(request.POST['data'])
filename = request.POST['filename']
wrapper = FileWrapper(StringIO(data))
response = HttpResponse(wrapper, content_type=guess_type(str(filename))[0])
response['Content-Length'] = len(data)
response['Content-Disposition'] = "attachment; filename=" + filename
return response
Run Code Online (Sandbox Code Playgroud)
该函数本身(针对 Django 1.0 编写)在升级到 1.5 后仍然可以正常工作。不幸的是,涵盖此视图的测试现在失败了:
def testDownload(self):
self.client.login(username='test', password='test')
real = 'abc' * 100
data = base64.encodestring(real)
response = self.client.post("/api/v1/download/", {'data': data, 'filename': 'out.jpg'})
self.assertEqual(real, response.content)
self.assertEqual(response['Content-Disposition'], 'attachment; filename=out.jpg')
Run Code Online (Sandbox Code Playgroud)
和错误:
Traceback (most recent call last):
File "/home/fred/.secret_projects/final/gerbils/tests/amf.py", line 548, in testDownload
self.assertEqual(real, response.content)
File …
Run Code Online (Sandbox Code Playgroud) django ×6
python ×5
bash ×1
coverage.py ×1
django-forms ×1
html ×1
http-referer ×1
javascript ×1
linux ×1
nose ×1
nosetests ×1
python-2.7 ×1
ractivejs ×1
sorting ×1
stringio ×1
unix ×1
wsgi ×1