当我定义类似于这样的Django表单类时:
def class MyForm(forms.Form):
check = forms.BooleanField(required=True, label="Check this")
Run Code Online (Sandbox Code Playgroud)
它扩展为HTML,如下所示:
<form action="." id="form" method=POST>
<p><label for="check">Check this:</label> <input type="checkbox" name="check" id="check" /></p>
<p><input type=submit value="Submit"></p>
</form>
Run Code Online (Sandbox Code Playgroud)
我希望复选框输入元素在复选框后面有一个标签,而不是相反.有没有办法说服Django这样做?
[编辑]
感谢Jonas的回答 - 仍然,虽然它解决了我问的问题(复选框标签呈现在复选框的右侧),但它引入了一个新问题(所有窗口小部件标签都呈现在他们的窗口小部件的右侧......)
我想避免重写_html_output(),因为它显然不是为它而设计的.我想出的设计是在Field类中实现字段html输出方法,覆盖Boolean字段的方法,并在_html_output()中使用该方法.遗憾的是,Django开发人员选择采用不同的方式,我希望尽可能在现有框架内工作.
CSS听起来像一个不错的方法,除了我不知道足够的CSS来解决这个问题,甚至不知道我是否喜欢这种方法.此外,我更喜欢仍然类似于最终输出的标记,至少在渲染顺序中.
此外,由于为任何特定标记设置多个样式表是合理的,因此在CSS中执行此操作可能意味着必须多次对多个样式执行此操作,这几乎使CSS成为错误的答案.
[编辑]
好像我正在回答下面的问题.如果有人有更好的想法如何做到这一点,不要害羞.
我们有一些动态HTML页面,其中包含一个<OBJECT>实例化ActiveX控件的标记.然后,用户可以导航到另一页面,该页面包含<OBJECT>指向较新版本的ActiveX控件的标签.
IE将在第二页上下载并安装新的ActiveX,这就是那个页面的用途.问题是,由于IE在第一页上加载了ActiveX,它现在将强制用户重新启动,然后才能完全安装下载的ActiveX,因为它正由进程(IE)使用.
在普通容器中,我只是在尝试升级之前卸载ActiveX.有没有办法迫使IE这样做?如果可以做到这一点,那么浏览一个不使用控件的页面是可以接受的.
编辑:
需要ActiveX本身执行某些操作的解决方案不能简单地工作,因为问题是当IE开始安装新版本的ActiveX时,ActiveX仍在内存中.我想要做的是在IE启动该过程时不要在内存中使用ActiveX,所以显然我不能依赖ActiveX控件本身的任何东西.
在研究这个问题时,我在网上发现了以下场景的多个提及,总是作为编程论坛上未解答的问题.我希望在此发布此内容至少可以记录我的发现.
首先,症状:在运行使用waveOutWrite()输出PCM音频的相当标准代码时,我有时会在调试器下运行时得到这个:
ntdll.dll!_DbgBreakPoint@0()
ntdll.dll!_RtlpBreakPointHeap@4() + 0x28 bytes
ntdll.dll!_RtlpValidateHeapEntry@12() + 0x113 bytes
ntdll.dll!_RtlDebugGetUserInfoHeap@20() + 0x96 bytes
ntdll.dll!_RtlGetUserInfoHeap@20() + 0x32743 bytes
kernel32.dll!_GlobalHandle@4() + 0x3a bytes
wdmaud.drv!_waveCompleteHeader@4() + 0x40 bytes
wdmaud.drv!_waveThread@4() + 0x9c bytes
kernel32.dll!_BaseThreadStart@8() + 0x37 bytes
Run Code Online (Sandbox Code Playgroud)
虽然明显的嫌疑人会在代码中的其他地方出现堆损坏,但我发现事实并非如此.此外,我能够使用以下代码重现此问题(这是基于对话框的MFC应用程序的一部分:)
void CwaveoutDlg::OnBnClickedButton1()
{
WAVEFORMATEX wfx;
wfx.nSamplesPerSec = 44100; /* sample rate */
wfx.wBitsPerSample = 16; /* sample size */
wfx.nChannels = 2;
wfx.cbSize = 0; /* size of _extra_ info */
wfx.wFormatTag = WAVE_FORMAT_PCM;
wfx.nBlockAlign = (wfx.wBitsPerSample >> 3) * wfx.nChannels;
wfx.nAvgBytesPerSec = wfx.nBlockAlign …Run Code Online (Sandbox Code Playgroud) 我正在开发一个允许注册用户创建或上传内容的应用程序,并允许匿名用户查看该内容并浏览注册用户的页面以查找该内容 - 这与Flickr等网站的允许情况非常相似人们浏览其用户的页面.
为此,我需要一种方法来识别匿名HTTP GET请求中的用户.用户应该能够键入http://myapplication.com/browse/<userid>/<contentid>并访问正确的页面 - 应该是唯一的,但出于隐私原因,不能是用户的电子邮件地址.
通过Google App Engine,我可以获得与用户关联的电子邮件地址,但就像我说的,我不想使用它.我可以让我的应用程序的用户在注册时选择一个唯一的用户名,但我想尽可能选择,以便注册过程尽可能短.
另一种选择是在注册过程中生成一些随机cookie(一个GUID?),并使用它,我没有看到一种明显的方法来保证这种cookie的唯一性,而无需访问数据库.
在给定App Engine用户对象的情况下,是否有一种方法可以获得可以这种方式使用的该对象的唯一标识符?
我正在寻找一个Python解决方案 - 我忘了GAE现在也支持Java.不过,无论语言如何,我都希望这些技术是相似的.
错误“X 服务器上的致命 IO 错误 0(成功)”是什么意思?当 X 客户端尝试调用 XvCreateImage() 时会产生该错误,并导致客户端终止。
X.0.log 显示以下版本信息:
X.Org X 服务器 1.6.4 发布日期:2009-9-27 X 协议版本 11,修订版 0 构建操作系统:Linux 2.6.24-23-server i686 Ubuntu 当前操作系统:Linux ori-laptop 2.6.31-17-generic #54-Ubuntu SMP Thu Dec 10 16:20:31 UTC 2009 i686 内核命令行:BOOT_IMAGE=/boot/vmlinuz-2.6.31-17-generic root=UUID=df637de9-47ed-4453-9393-67e2e2ffaa2f ro quiet splas
typedef struct Model
{
int recordId;
char *name;
}Model;
typedef struct ModelArray
{
//keeps the size that the array was initially create with. When more elements are needed
//we use this to add that many more elements
int originalSize;
//total number of elements that can be used
int elements;
//total number of elements used
int count;
//the actual array is stored here
Model *source;
}ModelArray;
void initModelArray(ModelArray *array, int numberOfElements)
{
array->originalSize = numberOfElements;
array->elements = numberOfElements;
array->count = 0; …Run Code Online (Sandbox Code Playgroud) 这有什么问题?
// rbt.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#ifndef rbth
#define rbth
typedef enum {
RBT_STATUS_OK,
RBT_STATUS_MEM_EXHAUSTED,
RBT_STATUS_DUPLICATE_KEY,
RBT_STATUS_KEY_NOT_FOUND
} RbtStatus;
typedef void *RbtIterator;
typedef void *RbtHandle;
RbtHandle rbtNew(int(*compare)(void *a, void *b));
// create red-black tree
// parameters:
// compare pointer to function that compares keys
// return 0 if a == b
// return < 0 if a < b
// return > 0 if a > b
// returns:
// handle …Run Code Online (Sandbox Code Playgroud)