我有一个django应用程序,有几个视图通过POST请求接受json对象.json对象是中等复杂的,有几层嵌套,所以我使用json库来解析raw_post_data,如下所示:
def handle_ajax_call(request):
post_json = json.loads(request.raw_post_data)
... (do stuff with json query)
Run Code Online (Sandbox Code Playgroud)
接下来,我想为这些视图编写测试.不幸的是,我无法弄清楚如何将json对象传递给客户端.这是我的代码的最简单的版本:
def test_ajax_call(self):
c = Client()
call_command('loadfixtures', 'temp-fixtures-1') #Custom command to populate the DB
J = {
some_info : {
attr1 : "AAAA",
attr2 : "BBBB",
list_attr : [ "x", "y", "z" ]
},
more_info : { ... },
info_list : [ 1, 22, 23, 24, 5, 26, 7 ]
}
J_string = json.dumps(J)
response = c.post('/ajax/call/', data=J_string )
Run Code Online (Sandbox Code Playgroud)
当我运行测试时,它失败了:
AttributeError: 'str' object has no attribute 'items'
Run Code Online (Sandbox Code Playgroud)
如何在Client.post方法中传递JSON对象?
我喜欢django的@login_required装饰,但有一点我无法弄清楚如何做到这一点.
如果未经身份验证的用户尝试访问@login_required页面(例如"/ private-stuff /"),我想将其踢回主页(例如"/ home /").但我不想在网址上附加"?next ="参数.换句话说,我只想重定向到"/ home /",而不是"/ home /?next =/private-stuff /".
我怎样才能做到这一点?有没有比写自己的装饰更好的方法?
这是一个通用的架构问题.我在许多地方读到,在MVC框架中,(1)模型应该很胖,控制器应该是瘦的.但我也读到(2)细节取决于你正在开发的框架.那么,如果你在django中开发呢?
我对django的经验是,很多逻辑最终会被放入视图和表单中.不是"业务逻辑",而是处理请求,会话等的细节.在代码行方面,这些细节往往超过操纵模型对象的业务逻辑.我做错了什么,或者这是django的工作方式?
我已经设置了一个带有管理页面的django项目.它在开发的前几周完美运行,暂时没有使用管理页面,当我回到它时,管理页面被破坏了.无论我做什么,它都不允许我登录.
输入用户名和PW后,管理页面总是说:
Please enter a correct username and password. Note that both fields are case-sensitive.
Run Code Online (Sandbox Code Playgroud)
我检查了数据库:超级用户存在并且is_active,is_superuser和is_staff全部为True.我已经使用shell来确保密码正确.我已多次刷新,删除并重新创建数据库,以确保没有错误.我还对中间件,网址,INSTALLED_APPS等进行了双重检查,以确保它们都已正确设置.
据我所知,管理页面完美运行,但他们从不让任何人登录.
任何想法在这里发生了什么,或尝试调试的其他方法?我真的对这个bug感到困惑.
PS:如果重要的话,我使用South进行数据库迁移,使用django-social-auth进行FB登录,并将local_settings.py用于生产和开发(我已经检查了它们 - 冲突不存在. )
tornado*web框架中的HTTPRequest类有助于将GET和POST参数映射到列表.我理解为什么 - 如果多次使用给定的参数名称.但是对于一些RequestHandler来说,这是一种痛苦.例如,如果我想传递一个json对象并在服务器上按原样解析它.
什么是最直接的方法来禁用map-to-list行为,以便我可以将未经改动的json发送到龙卷风/旋风服务器?
*Cyclone,实际上,万一这里有实现差异.
我正在阅读MongoDB,并试图了解它最适合的地方.我没有看到明确答案的一个问题是哪些操作便宜或昂贵,以及在什么条件下.
你能帮忙澄清一下吗?
谢谢.
我正在尝试将列名添加到numpy ndarray中,然后按名称选择列.但它不起作用.当我添加名称时,或者稍后当我尝试调用它们时,我无法判断问题是否发生.
这是我的代码.
data = np.genfromtxt(csv_file, delimiter=',', dtype=np.float, skip_header=1)
#Add headers
csv_names = [ s.strip('"') for s in file(csv_file,'r').readline().strip().split(',')]
data = data.astype(np.dtype( [(n, 'float64') for n in csv_names] ))
Run Code Online (Sandbox Code Playgroud)
基于维度的诊断符合我的预期:
print len(csv_names)
>> 108
print data.shape
>> (1652, 108)
Run Code Online (Sandbox Code Playgroud)
"print data.dtype.names"也返回预期的输出.
但是当我开始按字段名称调用列时,就会发生棘手的事情."列"仍然是一个包含108列的数组......
print data["EDUC"].shape
>> (1652, 108)
Run Code Online (Sandbox Code Playgroud)
...它似乎包含比数据集中的行更多的缺失值.
print np.sum(np.isnan(data["EDUC"]))
>> 27976
Run Code Online (Sandbox Code Playgroud)
知道这里出了什么问题吗?添加标题应该是一个简单的操作,但我已经打了几个小时这个bug.救命!
我正在使用mongodb作为后端在tornado.web中构建一个简单的Web应用程序.90%的服务器端代码库都存在于一组RequestHandler中,90%的数据对象都是json.因此,测试处理程序的基本用例是:
"Given Request Y and DB in state X,
verify that handler method Z returns json object J"
Run Code Online (Sandbox Code Playgroud)
我该如何设置这种测试?
我在这个主题上找到了一些博客文章和讨论主题,但他们主要关注的是设置asyncronous.我找不到任何关于设置正确类型的DB状态或GET/POST请求参数的信息.
langchain 文档包含此示例,用于配置和调用PydanticOutputParser
# Define your desired data structure.
class Joke(BaseModel):
setup: str = Field(description="question to set up a joke")
punchline: str = Field(description="answer to resolve the joke")
# You can add custom validation logic easily with Pydantic.
@validator('setup')
def question_ends_with_question_mark(cls, field):
if field[-1] != '?':
raise ValueError("Badly formed question!")
return field
# And a query intented to prompt a language model to populate the data structure.
joke_query = "Tell me a joke."
# Set up a parser + …Run Code Online (Sandbox Code Playgroud) python ×5
django ×4
json ×2
tornado ×2
unit-testing ×2
ajax ×1
arrays ×1
cyclone ×1
django-admin ×1
langchain ×1
mongodb ×1
numpy ×1
openai-api ×1