从我的数据库中检索文章列表没有问题。
class ArticleSitemap(Sitemap):
def items(self):
return articles.objects.filter(tagid=1399).order_by('-publisheddate')
我现在想接受一个查询参数来过滤输入的标签ID,即:
sitemap.xml?tagid = 1000
我还没有在文档或堆栈中找到示例。
答案 0 :(得分:0)
无法从Sitemap
课程访问HttpRequest
对象。可能最简单的方法是为站点地图创建自己的视图,执行urls.py
所需的操作,并调用Django内部视图来完成XML的最终渲染。
按照Django文档(https://github.com/gympulsr/qt-pushnotifications)设置您的站点地图网址,但请使用您自己的视图。
from my_app.sitemap_views import custom_sitemap_index, custom_sitemap_section
sitemaps = {
'foo': FooSitemap,
'bar': BarSitemap,
}
urlpatterns = [
url(r"^sitemap\.xml$", custom_sitemap_index,
{'sitemaps': sitemaps}, name='sitemap_index'),
url(r"^sitemap-(?P<section>.+)\.xml$", custom_sitemap_section,
{'sitemaps': sitemaps}, name='sitemaps'),
# ...
]
:
HttpRequest
您的自定义站点地图视图是标准的Django视图:您可以访问sitemap_views.py
,数据库,缓存......
import copy
from django.contrib.sitemaps import views as django_sitemaps_views
from django.contrib.sitemaps.views import x_robots_tag
@x_robots_tag
def custom_sitemap_index(request, sitemaps, template_name='sitemap_index.xml', content_type='application/xml',
sitemap_url_name='django.contrib.sitemaps.views.sitemap'):
print("You can access request here.", request)
return django_sitemaps_views.index(request, template_name, content_type, sitemaps, sitemap_url_name)
@x_robots_tag
def custom_sitemap_section(request, sitemaps, section=None, template_name='sitemap.xml', content_type='application/xml'):
tag_id = int(request.GET.get('tagid'))
# We do not want to modify global variable "sitemaps"!
# Otherwise sitemap instances would be shared across requests (tag_id should be dynamic).
sitemaps_copy = copy.deepcopy(sitemaps)
for section, site in sitemaps_copy.items():
if callable(site):
sitemaps_copy[section] = site(tag_id=tag_id)
return django_sitemaps_views.sitemap(request, sitemaps_copy, section, template_name, content_type)
:
sitemap.py
from django.contrib.sitemaps import Sitemap
class FooSitemap(Sitemap):
def __init__(self, tag_id: int):
self.tag_id = tag_id
super().__init__()
def items(self):
return articles.objects.filter(tagid=1399) \
.filter(tag_id=self.tag_id) \
.order_by('-publisheddate')
class BarSitemap(Sitemap):
pass
# ...
# ...
:
@Multipart
@POST("URL/uploadImages.php")
Call<Response> uploaImages(
@Part List< MultipartBody.Part> files );
答案 1 :(得分:-1)
它在请求的Get-attribute中:
网址&#39; ... / names / getNames?pattern = Helm&#39;导致请求对象具有GET:&lt; QueryDict:{&#39; pattern&#39;:[&#39; Helm&#39;]}&gt;