GVKun编程网logo

Django向我显示终端中的查询集,但不向我显示主页中的查询集(django 或查询)

16

本篇文章给大家谈谈Django向我显示终端中的查询集,但不向我显示主页中的查询集,以及django或查询的知识点,同时本文还将给你拓展ajax请求下载一个excel文件正向我显示截断的响应、andro

本篇文章给大家谈谈Django向我显示终端中的查询集,但不向我显示主页中的查询集,以及django 或查询的知识点,同时本文还将给你拓展ajax请求下载一个excel文件正向我显示截断的响应、android-listview中的自定义控件(旋转器)向我显示重复信息、Django - 按模板中的特定字段对查询集进行分组、django - 提高 __in 查询集在 M2M 过滤中的性能等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Django向我显示终端中的查询集,但不向我显示主页中的查询集(django 或查询)

Django向我显示终端中的查询集,但不向我显示主页中的查询集(django 或查询)

我建议您将query添加到呈现的新页面的上下文中。 而且我对视图进行了一些更改/简化:

def search(request):
    query = request.GET.get('query','')   # so we always get a string

    qs = Post.objects.all()
    if len(query) > 0:
        qs = qs.filter(title__icontains=query)

    context = {
        'query': query,'object_list': qs,}
    print('context',context)

    return render(request,'blog/home.html',context)

您应该在模板中呈现传递给上下文的query而不是request.GET.query。另外,您可以通过迭代object_list来显示结果数据。

<formaction="{% url 'blog-search'%}">
    <inputname="query" value="{{ query }}" placeholder="Search">
    <buttontype="submit">Search</button>
</form>

<table>
{% for e in object_list %}
    <tr>
        <td>{{ e }}</td>
    </tr>
{% endfor %}
</table>

对您有用吗?

ajax请求下载一个excel文件正向我显示截断的响应

ajax请求下载一个excel文件正向我显示截断的响应

我正在尝试使用Ajax(XMLHttpRequest)下载Excel文件。

完成后,发现responseText只有5个字符。
网络嗅探工具(Fiddler)向我显示我的计算机收到了整个文件。

那么为什么responseText只显示5个字符?我已经尝试了同步和异步调用。

感谢您在这里提供的任何帮助。

var xmlHttpReq = getXmlHttpRequestObject();

function  getXmlHttpRequestObject(){
    var xmlhttp;

    if (window.XMLHttpRequest){// code for all new browsers
          xmlhttp=new XMLHttpRequest();

    }else if (window.ActiveXObject){// code for IE5 and IE6
         // xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

        progids = ['MSXML2.XMLHTTP.6.0','MSXML2.XMLHTTP.3.0','Microsoft.XMLHTTP'];

        for (i=0 ; i < progids.length; i ++){
            try {
                xmlhttp = new window.ActiveXObject(progids[i]);
                break;
            } catch (e) {
              //do nothing
            }
        }


    }


    return xmlhttp;


}

//utility method for http get
function doSynchronousGet(url){
    if(xmlHttpReq == null){
        xmlHttpReq = getXmlHttpRequestObject();
    }

    //change last param to true for making async calls.
    xmlHttpReq.open("GET",url,false);
    xmlHttpReq.setRequestHeader("Connection","close");
    xmlHttpReq.send(null);
    return xmlHttpReq.responseText;
}



var resultText = doSynchronousGet(url);

alert('resultText length: '+ resultText.length);
alert('resultText: '+ resultText);

android-listview中的自定义控件(旋转器)向我显示重复信息

android-listview中的自定义控件(旋转器)向我显示重复信息

listview中的自定义微调器向我显示重复信息

我正在ListView中自定义Spinner
在不使用自定义Spinner之前,它一直有效,并将标题和说明显示为:

标题1说明1

标题2说明2

标题3说明3

标题4说明4

标题5说明5

标题6说明6

标题7说明7

但是,当我使用“自定义微调器”时,它会显示以下信息:

标题7说明7

标题7说明7

标题7说明7

标题7说明7

标题7说明7

标题7说明7

标题7说明7

它仅显示最后的标题和描述.

在AdapterNote.Java类中:

package ir.redreactor.app.Com.NovinEr;

import java.util.ArrayList;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.TextView;

public class AdapterNote extends ArrayAdapter {

    public AdapterNote(ArrayList array) {
        super(G.context, R.layout.adapter_notes, array);
    }

    private static class ViewHolder {

        public ViewGroup LayoutRt;
        public TextView  txtTitle;
        public EditText  txtDetail;
        public TextView  txtTableName;
        public TextView  txtSort;
        public TextView  txtID;
        public TextView  txtpos;

        public ViewHolder(View view) {
            LayoutRt = (ViewGroup) view.findViewById(R.id.layout_Rt);
            txtTitle = (TextView) view.findViewById(R.id.txtTitleCS_One);
            txtDetail = (EditText) view.findViewById(R.id.edtContentCS_One);
            txtTableName = (TextView) view.findViewById(R.id.txtTableNameCS_One);
            txtSort = (TextView) view.findViewById(R.id.txtSortCS_One);
            txtID = (TextView) view.findViewById(R.id.txtIDCS_One);
            txtpos = (TextView) view.findViewById(R.id.txtPositionCS_One);
        }

        public void fill(ArrayAdapter Adapter, StructNote Item, final int position) {
            txtTitle.setText(Item.title);
            txtDetail.setText(Item.detail);
            txtTableName.setText(Item.nameOfTable);
            txtSort.setText(Item.sort.toString());
            txtID.setText(Item.intID.toString());
            txtpos.setText("" + position);
        }
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        StructNote item = getItem(position);
        final ViewHolder holder;
        if (convertView == null) {
            convertView = G.inflater.inflate(R.layout.adapter_notes, parent, false);
            holder = new ViewHolder(convertView);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        holder.fill(this, item, position);
        return convertView;
    }
}

在自定义微调器类“ CS_One.java”中:

package ir.redreactor.app.Com.NovinEr;

import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;

public class CS_One extends LinearLayout {

    public CS_One(Context context) {
        super(context);
        initialize(context);
    }

    public CS_One(Context context, AttributeSet attrs) {
        super(context, attrs);
        initialize(context);
    }

    private void initialize(Context context) {
        //
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View view = inflater.inflate(R.layout.cs, this, true);
        // Buttons
        Button btnSortCS_One = (Button) view.findViewById(R.id.btnSortCS_One);
        Button btnFavCS_One = (Button) view.findViewById(R.id.btnFavCS_One);
        Button btnShareCS_One = (Button) view.findViewById(R.id.btnShareCS_One);
        Button btncopyCS_One = (Button) view.findViewById(R.id.btncopyCS_One);
        Button btnSaveCS_One = (Button) view.findViewById(R.id.btnSaveCS_One);
        // Text Fields
        final EditText edtContentCS_One = (EditText) view.findViewById(R.id.edtContentCS_One);
        final TextView txtTitleCS_One = (TextView) view.findViewById(R.id.txtTitleCS_One);
        TextView txtGreenCS_One = (TextView) view.findViewById(R.id.txtGreenCS_One);
        TextView txtBlueCS_One = (TextView) view.findViewById(R.id.txtBlueCS_One);
        TextView txtYelloCS_One = (TextView) view.findViewById(R.id.txtYelloCS_One);
    }
}

LayoutRt已在“ adapter_notes.xml”中定义,因此其他项在“ cs.xml”中定义(cs.xml是针对自定义微调器的XML)

如何解决?

我使用了logcat:

Log.i("tst", "G.Note.Size Is: " + G.notes.size());
Log.i("tst", "note.title  Is: " + note.title);
Log.i("tst", "note.detail Is: " + note.detail);

它告诉我:

04-24 08:27:30.482: I/tst(309): G.Note.Size Is: 1
04-24 08:27:30.482: I/tst(309): note.title  Is: ???
04-24 08:27:30.482: I/tst(309): note.detail Is: hossein
04-24 08:27:30.482: I/tst(309): G.Note.Size Is: 2
04-24 08:27:30.482: I/tst(309): note.title  Is: ??? ????????
04-24 08:27:30.482: I/tst(309): note.detail Is: kurd
04-24 08:27:30.492: I/tst(309): G.Note.Size Is: 3
04-24 08:27:30.492: I/tst(309): note.title  Is: ????? ???
04-24 08:27:30.492: I/tst(309): note.detail Is: 
04-24 08:27:30.492: I/tst(309): G.Note.Size Is: 
04-24 08:27:30.492: I/tst(309): note.title  Is: ??? ???? ??? ????
04-24 08:27:30.492: I/tst(309): note.detail Is: 
04-24 08:27:30.492: I/tst(309): G.Note.Size Is: 5
04-24 08:27:30.492: I/tst(309): note.title  Is: ?? ????
04-24 08:27:30.492: I/tst(309): note.detail Is: 
04-24 08:27:30.492: I/tst(309): G.Note.Size Is: 6
04-24 08:27:30.492: I/tst(309): note.title  Is: ??? ???? ??? ????
04-24 08:27:30.492: I/tst(309): note.detail Is: 
04-24 08:27:30.501: I/tst(309): G.Note.Size Is: 7
04-24 08:27:30.501: I/tst(309): note.title  Is: ??? ???
04-24 08:27:30.501: I/tst(309): note.detail Is: 
04-24 08:27:30.501: I/tst(309): G.Note.Size Is: 8
04-24 08:27:30.501: I/tst(309): note.title  Is: ????? ????????
04-24 08:27:30.501: I/tst(309): note.detail Is: 
04-24 08:27:30.501: I/tst(309): G.Note.Size Is: 9
04-24 08:27:30.501: I/tst(309): note.title  Is: ????? ????
04-24 08:27:30.501: I/tst(309): note.detail Is: 

它有效,但不会显示在列表视图中

解决方法:

采用:

 public StructNote note;

并循环调用它:

 note = new StructNote();

对于每个新笔记使用

new …

Django - 按模板中的特定字段对查询集进行分组

Django - 按模板中的特定字段对查询集进行分组

我有一张桌子Events,是按田野排序的date。

我想打印出模板中的事件,但为每个日期使用一个单独的div ,例如:

<div>
  <h1>December 30th</h1>
  <!-- div for Event 1 from December 30th -->
  <!-- div for Event 2 from December 30th -->
</div>

<div>
  <h1>December 31st</h1>
  <!-- div for Event 1 from December 31st -->
  <!-- div for Event 2 from December 31st -->
  <!-- div for Event 3 from December 31st -->
</div>

我该怎么做呢?


我当前的解决方案是将Event对象放入以日期
为键的字典中。这具有排序问题,并且效率低下。

视图:

events = Event.objects.select_related().all()

events_dict={}
for event in events:
    date=event.date.strftime('%d %B %Y')
    if date in events_dict:
        events_dict[date].append(event) 
    else:
        events_dict[date] = [event]

Template:

{% for date,events in events_dict.items %}
  <div>
    <h1>{{date}}</h1>
    {% for event in events %}
      {% include "partials/event.html" %}
    {% endfor %}
  </div>
{% endfor %}

django - 提高 __in 查询集在 M2M 过滤中的性能

django - 提高 __in 查询集在 M2M 过滤中的性能

如何解决django - 提高 __in 查询集在 M2M 过滤中的性能?

我有一个模型与另一个模型有 M2M 关系。

这些是我的模型:

class Catalogue(models.Model):
    city = models.CharField(db_index=True,max_length=100,null=True)
    district = models.CharField(db_index=True,null=True)
    type = models.ManyToManyField(Type,db_index=True)
    datetime = models.CharField(db_index=True,null=True)


class Type(models.Model):
    name = models.CharField(max_length=100)

    def __str__(self):
        return self.name

这是views.py:

class all_ads(generic.ListView):
    paginate_by = 12
    template_name = ''new_list_view_grid-card.html''
    def get_queryset(self):
        city_district = self.request.GET.getlist(''city_district'')
        usage = self.request.GET.get(''usage'')
        status = self.request.GET.get(''status'')

        last2week = datetime.datetime.Now() - datetime.timedelta(days=14)

        status = status.split('','')

        if usage:
            usage = usage.split('','')
        else:
            usage = [''1'',''2'',''3'',''4'',''5'',''6'',''7'',''8'',''9'',''10'',''11'',''12'',''13'',''14'',''15'',''16'',''17'',''18'',''19'',''20'',''21'',''22'',''23'',''24'',''25'',''26'',''27'',''28'',''29'',''30'',''31'']

        intersections = list(set(status).intersection(usage))
        type_q = (Q(type__in=intersections) & Q(type__isnull=False))

        result = models.Catalogue.objects.filter(
            Q(datetime__gte=last2week) &
            type_q &
            ((reduce(operator.or_,(Q(city__contains=x) for x in city_district)) & Q(city__isnull=False)) |
             (reduce(operator.or_,(Q(district__contains=x) for x in city_district)) & Q(district__isnull=False)))
        ).distinct().order_by(''-datetime'').prefetch_related(''type'')

        return result

我想用一些查询过滤 MysqL 数据库并在列表视图中返回结果。

它在小型数据库上运行良好,但对于大型数据库,返回结果需要 10 多秒。如果我删除 type_q 查询,需要 2 秒(减少 10 秒!)。

如何提高 __in 查询集的性能?

解决方法

看起来 type_q 本身并不是真正的罪魁祸首,而是一个乘数,因为现在我们创建了一个 LEFT OUTER JOIN,因此 __contains 会运行在所有组合上。因此,这更像是两个一起工作的过滤器的特点

我们可以省略它:

cat_ids = list(Catalogue.objects.filter(
    Q(*[Q(city__contains=x) for x in city_district],_connector=Q.OR) |
    Q(*[Q(district__contains=x) for x in city_district],_connector=Q.OR)
).values_list(''pk'',flat=True))

result = models.Catalogue.objects.filter(
    Q(datetime__gte=last2week),type_q,pk__in=cat_ids
).distinct().order_by(''-datetime'').prefetch_related(''type'')

某些数据库(众所周知,MySQL不能很好地优化子查询),甚至可以用子查询来做到这一点。所以这里我们没有具体化列表,而是让 Django 使用子查询:

cat_ids = Catalogue.objects.filter(
    Q(*[Q(city__contains=x) for x in city_district],flat=True)

result = models.Catalogue.objects.filter(
    Q(datetime__gte=last2week),pk__in=cat_ids
).distinct().order_by(''-datetime'').prefetch_related(''type'')

今天关于Django向我显示终端中的查询集,但不向我显示主页中的查询集django 或查询的介绍到此结束,谢谢您的阅读,有关ajax请求下载一个excel文件正向我显示截断的响应、android-listview中的自定义控件(旋转器)向我显示重复信息、Django - 按模板中的特定字段对查询集进行分组、django - 提高 __in 查询集在 M2M 过滤中的性能等更多相关知识的信息可以在本站进行查询。

本文标签: