小编jpi*_*pic的帖子

Django 测试:临时数据库文件中没有数据

我使用的 sqlite3 数据库设置如下settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.contrib.gis.db.backends.spatialite',
        'NAME': 'path/to/config.sqlite',
        'TEST_NAME': 'path/to/test-config.sqlite',
        # ... USER, PASSWORD and PORT left out for brevity
    }
}
Run Code Online (Sandbox Code Playgroud)

在测试运行期间开始于:

python manage.py test myapp.mytest
Run Code Online (Sandbox Code Playgroud)

这会临时创建一个数据库文件path/to/test-config.sqlite,我需要在另一个加载了所需装置的应用程序中使用该文件。

然而,数据库文件是空的,我在一个测试的暂停期间断言:

sqlite> select * from someapp_somemodel;

... no results here :(
Run Code Online (Sandbox Code Playgroud)

其他不需要sqlite文件并且内存数据库就足够的测试用例,不会发生错误。

我的问题:

  • 如果 django 无论如何创建它,为什么不将其数据刷新到数据库文件中?和
  • 我如何说服 django 这样做,因为我需要将数据转储到临时数据库文件中?

编辑

如果有任何兴趣,我正在使用 Django 1.3.1。

编辑2

我熟悉fixtures,我用它们来填充数据库,但我的问题是fixtures 中的数据在测试过程中没有写入数据库文件。对不起,如果我对这个事实不够清楚。

编辑3

由于我的问题需要一些澄清,请考虑以下测试设置(与我实际做的很接近):

class SomeTestCase(django.test.TestCase):
    fixtures = ["some_fixture.json", "some_other_fixture.json"]

    def testSomething(self):
        import pdb; pdb.set_trace()
Run Code Online (Sandbox Code Playgroud)

testSomething方法运行到断点时,我启动sqlite3程序并连接到 …

python sqlite django django-testing django-database

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

Django内联表单集和选择字段会生成太多的数据库查询

我有一个包含许多外键字段的模型,例如带有字段'type','level','color','intensity'的模型Product(只是一个通用示例).

然后,我有一个页面,使用Type表单编辑给定类型的所有产品,产品作为内联formset,并可选择使用内联添加其他产品extra=10.

我觉得非常奇怪的是,每次当我输出模板上的一个外键选择字段时,Django会查询数据库以获取选项(每次).

例如:

{% for form in formset %}
    {{ form.level }}
    {{ form.color }}
    {{ form.intensity }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

有20个产品(和10个空的额外表格),上面的代码select * from ...从级别,颜色和强度共发出30 个查询(使用Django调试工具栏显示),其中3应该就足够了.这些选项不太可能在请求中改变,但即使它们确实如此,我绝对不希望一些新添加的选项仅出现在最后5个表单中.

有没有办法优化我的模型/表单/视图/模板,以便数据库不会被不必要地敲打?

-

免责声明:我对django和python相对较新,并且不禁想到必须有办法以某种方式解决这个问题.

python django inline-formset

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

Django模板标记{{for/empty}}用于循环变量

要使用我的Django应用程序中的相关参数生成一组Javascript变量,我有两个嵌套的for循环:

<script>
{% for model in models %} 
    {% for item in model.attribute|slice:":3" %}
        {% if forloop.first %} 
            var js_variable{{ forloop.parentloop.counter0 }} = [
        {% endif %}
            '{{ item.attribute }}' ,
        {% if forloop.last %}
            {{ item.attribute }} ]
    {% empty %}
        var js_variable{{ forloop.parentloop.counter0 }} = []
    {% endfor %}
{% endfor %}

....code that gets unhappy when js_variable[n] doesn't exist.....

</script>
Run Code Online (Sandbox Code Playgroud)

{% empty %}发生它似乎没有访问{{ forloop.parentloop. counter0 }}变量,因此变量名称js_variable[n]打印不正确js_variable(没有计数器提供的数字),以后代码抱怨.

是否这个变量在{{ empty …

javascript python django

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

不允许chmod()操作--FatFree框架

我一直在开发FatFree框架中的应用程序,现在我正在尝试将其部署在服务器上.当我在localhost上运行时,一切似乎都很好.

但是,当我在服务器上部署它并试图访问它时,它给了我一个奇怪的错误,它是 -

Internal Server Error

chmod(): Operation not permitted

#0 /var/www/webapp/inc/main.php:62 Template::serve('front_page.php')
#1 /var/www/index.php:65 F3::run()
Run Code Online (Sandbox Code Playgroud)

我已经给了该webapp文件夹777的权限,所以chmod()应该被允许.以上表明在提供模板文件时出错front_page.php.

我怎样才能解决这个问题?

php linux fat-free-framework

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

有多个django实例的芹菜

我在同一台服务器上使用了几个django实例,每个实例都在virtualenv中.如何启动芹菜服务器并确保它始终运行和更新?即服务器重启或代码更新后?

/etc/init.d脚本和配置文件假定单个Django安装.我必须使用./manage.py celeryd命令吗?

关心西蒙

python linux django celery

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

你如何调试django模板?

最近我学习了Werkzeug的交互式调试器,它结合了django_extensions来调试Django Python代码./manage.py runserver_plus.

但是你如何调试模板内部?如果我{{ yasdasdasf }}在模板中添加一些乱码,那么Django会默默地忽略它.更令人讨厌的是当你期望某些东西出现在模板中时,但它并不是因为有错误.

我想我已经阅读了一些关于使用{{ debug }}内部模板或TEMPLATE_STRING_IF_INVALID内部的解决方案settings.py,但是每次想要调试或检查模板中的内容时,这似乎都有很多"打开和关闭".

python django debugging django-templates

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

Django中的对象级别级联权限

诸如Django-guardian和django-permissions之类的项目使您能够拥有对象级权限。但是,如果两个对象之间通过父子关系相互关联,则除非另有说明,否则子对象有什么方法可以继承父对象的许可?例如,除非用户为子文件夹明确分配了不同的权限,否则a subfolder应该继承权限parent folder

使用Django(尤其是Django-guardian模块)完成此操作的最佳方法是什么?

python django permissions cascade

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

在django中获取javascript数组

这是我的代码:

urls.py:

from django.conf.urls import patterns
from views import show,showpage

urlpatterns = patterns('',
                       (r'^$',showpage),
                       (r'^show/$',show),
)
Run Code Online (Sandbox Code Playgroud)

views.py

from django.http import HttpResponse
def show(request):
  arr = reqeust.GET.get('arr','Nothing')
  print arr#**it's 'Nothing'**
  if arr == 'Nothing':
    msg = 'fail'
  else:
    msg = 'pass'
  return HttpResponse(msg)

def showpage(request):
  html = '''    <html>
<head>
<script language="javascript" type="text/javascript" src="/site_media/js/jquery-1.7.2.js"></script>
</head>
<body>
<input type="button" id="input_btn"/>
</body>
<script language="javascript" type="text/javascript">
$(function(){
  $("#input_btn").bind("click",function(){
    arr = [1,2,3,4,5,6]
    $.ajax({
      type:"GET",
      url:"/show/",
      data:{arr:arr},//**I want pass the arr to django**
      success:function(data){alert(data);},
      error:function(data){alert(data);}
    }); …
Run Code Online (Sandbox Code Playgroud)

javascript arrays django jquery

5
推荐指数
2
解决办法
2991
查看次数

如何在提交失败后保留django中的表单字段?

来自views.py的代码:

def feedback(request):
    if request.method == "POST":
        form = CommentForm(request.POST)
        if form.is_valid():
            form.save()
        else:
            print("form.errors:", form.errors)
    else:
        form = CommentForm()
    articles = Comment.objects.all()
    ResponseDict = {"articles": articles, "form": form}
    return render_to_response("feedback.html", ResponseDict, 
        context_instance = RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

我已经尝试了这个以及从类似问题的答案中进行了一些修改,但没有任何效果.当我按下提交按钮时,html中的所有表单字段都变为空.

编辑:来自feedback.html的代码:

{% extends "base.html" %}
{% block main %}
    <table>
        <form action="/feedback/" method="POST">
            {% csrf_token %}
            <div class="article">
                <label for="name">
                    ???? ???:
                </label>
                <br />
                <input type="text" name="name" id="name" size="40" class="inputbox" value="" />
                <br />
                <!-- class="inputbox required" -->
                <textarea class="WithoutTinymce" cols="50" rows="10" name="text" …
Run Code Online (Sandbox Code Playgroud)

python django django-forms

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

Django 基于类的视图:在调度中验证对象

是否有一种既定的方法可以在self.get_object()稍后在 get/post 中调用时验证调度中的对象而无需进行额外的数据库调用?

这是我到目前为止的内容(针对这个问题略有改动):

class CourseUpdateView(UpdateView):
    def dispatch(self, request, *args, **kwargs):

        self.request = request
        self.kwargs = kwargs
        self.object = self.get_object()

        if self.object.is_online:
            messages.warning(request, "Sorry this one can't be updated")
            return redirect("course:detail", pk=self.kwargs['pk'])

        # this is going to call self.get_object again isn't it?
        return UpdateView.dispatch(self, request, *args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

python django django-class-based-views

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