好吧,我花了几个小时研究这个问题并扫描了整个 stackoverflow,但仍然不知道该怎么办。但真正让我抓狂的是,如此微不足道、世界上最简单的事情却行不通。所以,我现在拥有的是一个带有输入和按钮的表单:
<form id="frm" action="/accent/login/enter/">
{% csrf_token %}
<div draggable="true" id="panel" class="panel" title="">
<input id="login" name="login" type="text" placeholder="" class="required" /> <br/>
<input id="pswd" name="pswd" type="password" placeholder="" class="required" /> <br/>
<button id="btn" value="">ENTER</button>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
我有这个代码应该发送表单:
$('#btn').one("click",function(){ // prevent from multiple submits
$('#frm').validate({ // validate the form before submission
...general stuff: rules, messages, etc
submitHandler:function(form){
$('#frm').submit(function(e){ //submitted on the second click. why???
...prepare parameters for ajax call
$.ajax({
type:'POST',
...general stuff
});
e.preventDefault();
})
}
});
});
Run Code Online (Sandbox Code Playgroud)
问题是,当用户第一次单击“提交”按钮时,表单不会提交,但是,如果他或她第二次单击它,则可以正常提交。我无法理解 jquery 中实现的这种行为背后的逻辑。此外,我应该说,我还尝试过许多其他技巧,例如:
form.submit(... …Run Code Online (Sandbox Code Playgroud) 我尝试手动使用make_password和check_password运行。我在我的一个观点中这样做(仅出于测试原因):
#iteration one:
def enter(request):
res = make_password('admin')
return HttpResponse(res)
Run Code Online (Sandbox Code Playgroud)
所以,当我去enter页面时,我看到了这个东西:
pbkdf2_sha256$15000$fmX24ZPCKBdA$fvpfYMacxOi44QFDeLLfRRUN85RweMJTfxxoC+YS2XE=
Run Code Online (Sandbox Code Playgroud)
假设我将此输出存储在一个文本文件中(同样出于测试原因)passwords.txt,格式如下:
1 pbkdf2_sha256$15000$fmX24ZPCKBdA$fvpfYMacxOi44QFDeLLfRRUN85RweMJTfxxoC+YS2XE=
2 ....hash for another user
Run Code Online (Sandbox Code Playgroud)
在第二次迭代中,我想检查我的密码(让它存储在请求变量中的 GET['pass'] 中),但不知道如何:
def login(request):
# How to use check_password here to check against data stored in
# passwords.txt
# it should either output False
# or an id, like 1 in our test case for password 'admin'.
Run Code Online (Sandbox Code Playgroud)
而且我想再次强调,我想手动使用它,只是为了理解这些功能背后的逻辑。所以,Django此刻我不想让我为我做这件事。
我尝试使用phpexcel库将最简单的html表转换为excel,但无济于事.现在,我这样做:
require_once ('/PHPExcel/Classes/PHPExcel.php');
file_put_contents('tmp.html','<table border="1"><tr><td>123</td></tr></table>');
$objReader = new PHPExcel_Reader_HTML;
$objPHPExcel = $objReader->load('tmp.html');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save("myExcelFile.xlsx");
Run Code Online (Sandbox Code Playgroud)
当我终于打开时myExcelFile.xlsx,我看到它是空的,而tmp.html不是.我使用的PHPExcel_1.8.0是该库的版本.
编辑
感谢马克,它现在正在运作.但是,我看到,有些困难的html无法正确呈现.像这个表头一样,例如:
<Table style="border-collapse: collapse;" cellspacing="0" cellpadding="4"><THead><TR><TH style="background-color:#F8F8F8; border:1px solid #CCCCCC ; width:100px " rowspan="5" >1</TH><TH style="background-color:#F8F8F8; border:1px solid #CCCCCC ; width:100px " rowspan="5" >2</TH><TH style="background-color:#F8F8F8; border:1px solid #CCCCCC ; width:100px " rowspan="5" >3</TH><TH style="background-color:#F8F8F8; border:1px solid #CCCCCC " colspan="7" rowspan="1" >4</TH><TH style="background-color:#F8F8F8; border:1px solid #CCCCCC ; width:100px " rowspan="5" >16</TH></TR><TR><TH style="background-color:#F8F8F8; border:1px solid …Run Code Online (Sandbox Code Playgroud) 我有一个简单的fortran子程序(仅用于测试python-fortran接口).它看起来像这样:
subroutine sum2(x,y,z)
real(kind=8),intent(in)::x,y
real(kind=8),intent(inout)::z
z = x + y
print *, "sum is ", z
end subroutine sum2
Run Code Online (Sandbox Code Playgroud)
编译后f2py我去python并执行以下操作:
>>> import sum2
>>> x = 1.0
>>> y = 2.0
>>> z = 0.0
>>> sum2.sum2(x,y,z)
sum is 3
>>> z
0.0
Run Code Online (Sandbox Code Playgroud)
因此,即使z指定为inout,其值也不会被函数更改.我需要知道原因.另一个问题涉及notebook.如果我sum2在那里导入并运行sum2.sum2(x,y,z)我甚至看不到消息sum is ....那么,问题是,如果可以在笔记本中调用fortran子程序吗?
编辑
有一个合理的评论,在我的例子中,我使用了不可变的数据类型.所以,我决定改变它,但我仍然有同样的问题.所以,我的新fortran子程序看起来像这样:
subroutine arr(x)
real(kind=8),dimension(1)::x
x(1) = 2 ! new value
print *, "x[0] …Run Code Online (Sandbox Code Playgroud) 我的身份验证方案需要一些灵活性.通过这种灵活性,我的意思是我不想完全依赖用户模型或任何模型.在伪代码中我想得到这种逻辑:
class MyCustomAuthentication(authentication.BaseAuthentication)
def authenticate(self, request):
email = request.META.get('X_EMAIL')
password = request.META.get('X_PASSWORD')
# Here I want to connect to my database
# then make a query and verify if there exists a row that
# corresponds to email and password
# If it exists, then authentication is passed
# if not, then it is not passed
@api_view()
@authentication_classes((MyCustomAuthentication))
def items(request):
return Response({"message":"Hello world!"})
Run Code Online (Sandbox Code Playgroud)
所以,如你所见,我不想依赖ORM,我只想用自己的友好sql来做自己的整个事业.但我不知道如何以及我应该从认证中返回什么.
在这里,我提供了一个完全可重现的代码,它演示了整个问题。问题是,当我从“父”表中删除行时,不会删除“子”表中的相应行,即使它们具有ON DELETE CASCADE指定的外键。所以这是代码:
>>> import sqlite3
>>> cnx = sqlite3.connect("mytest.db")
>>> cursor = cnx.cursor()
>>> cnx.execute("BEGIN")
<sqlite3.Cursor object at 0x7f0ab0923490>
>>> cursor.execute("CREATE TABLE test_table (id integer)")
<sqlite3.Cursor object at 0x7f0ab0923420>
>>> cursor.execute("CREATE UNIQUE INDEX id_primary ON test_table(id)")
<sqlite3.Cursor object at 0x7f0ab0923420>
>>> cursor.execute("INSERT INTO test_table (id) VALUES (1),(2),(3)")
<sqlite3.Cursor object at 0x7f0ab0923420>
>>> cursor.execute("CREATE TABLE test_table_2(id_fk integer, txt text, FOREIGN KEY (id_fk) REFERENCES test_table(id) ON DELETE CASCADE)")
<sqlite3.Cursor object at 0x7f0ab0923420>
>>> cursor.execute("INSERT INTO test_table_2 (id_fk, txt) VALUES …Run Code Online (Sandbox Code Playgroud) 对于一些奇怪的原因,我无法为一个绑定值字段集与checkboxToggle属性设置为true.所以,它的配置如下:
xtype: "fieldset",
title: "Box",
checkboxName: "bounding_box",
checkboxToggle: true,
bind: {
collapsed: "{!rec.bounding_box}"
} // results in error message: TypeError: this[c._config.names.set] is not a function
// bind: "{!rec.bounding_box}" does not work either
Run Code Online (Sandbox Code Playgroud)
所以,上面的代码不起作用.但是,同样的技术适用于简单的checkbox字段:
xtype: "checkbox",
fieldLabel: "Show label",
name: "show_label",
bind: "{rec.show_label}"
Run Code Online (Sandbox Code Playgroud)
这有什么问题,我该如何解决?
我正在使用ExtJS 6.2.1.我面临的问题是,材质主题打破了我的页面的整个布局,它只包含一个窗口小部件.这就是我在页面中包含材质主题的方法:
<link rel="stylesheet" href="/ext-6.2.1/build/modern/theme-material/resources/theme-material-all.css" type="text/css" />
Run Code Online (Sandbox Code Playgroud)
这就是它的样子:
但是,如果我切换到triton主题,如下:
<link rel="stylesheet" href="/ext-6.2.1/build/classic/theme-triton/resources/theme-triton-all.css" type="text/css" />
Run Code Online (Sandbox Code Playgroud)
一切都开始起作用了:
那么,这有什么问题,我该如何解决?
我有三个文件 - lib.h带有函数声明,lib.cpp带有实现和main.cpp入口点.他们的内容就像:
//lib.h
#pragma once
void func1();
void func2();
void funcN();
//lib.cpp
#include "lib.h"
void func1(){}
void func2(){}
void funcN(){}
//main.cpp
#include "lib.h"
int main() {
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我这样编译它:
$ g++ main.cpp lib.cpp
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.但是现在我想在我的一个函数中使用参数包.像这样:
//change in lib.cpp
void funcN(int i, auto... j) {
}
Run Code Online (Sandbox Code Playgroud)
我分别改变了lib.h和main.cpp:
//change in lib.h
void funcN(int, auto...);
//change in main.cpp
int main() {
funcN(1, 2);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但现在,当我编译它时
$ g++ main.cpp lib.cpp
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息:
main.cpp :(.text + 0x14):未定义引用`void funcN(int,int,...)'collect2:error:ld返回1退出状态 …