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