国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

6:django通用視圖

2019-11-14 17:26:10
字體:
供稿:網(wǎng)友

上一節(jié)我們介紹了django視圖函數(shù)里面幾個常用的函數(shù),這節(jié)我們來看一下django為我們提供的一些通用視圖吧

在最后面有我自己的示例代碼,html部分太多了就不貼了

“簡單”視圖函數(shù)

正如名字所言,簡單視圖函數(shù)封裝在django.views.generic.simple模塊里面,主要有direct_to_template和redirect_to兩個簡單視圖函數(shù),主要使用范圍是:沒有任何的視圖邏輯,僅僅需要重定向一個url

django.views.generic.simple.direct_to_template

描述:使用從url中獲取的參數(shù)封裝而成的在模板中名為{{ params }}的一個字典去渲染一個給定的模板

必選參數(shù):

  • template正如描述所說,必須給定一個模板的全名

可選參數(shù):

  • extra_context: 一個用來渲染模板的字典變量,默認是一個空字典
  • mimetype: 返回的文檔類型,默認是DEFAULT_CONTENT_TYPE 里面的設(shè)置
    from django.views.generic.simple import direct_to_templateurlpatterns = patterns('',    (r'^foo/$',             direct_to_template, {'template': 'foo_index.html'}),    (r'^foo/(?P<id>/d+)/$', direct_to_template, {'template': 'foo_detail.html'}),) 

第二個url里面?zhèn)鬟f的參數(shù)為{{ params.id }},對于/foo/15/這個請求來說,{{ params.id }}的值是15

django.views.generic.simple.redirect_to

描述:重定向到一個url

必選參數(shù)

  • url: 需要被重定向的url,如果為None,返回一個410錯誤

可選參數(shù)

  • permanent: 重定向是否永久,默認為真,如果為真,返回301,如果為假,返回302
    301(永久移動)請求的網(wǎng)頁已永久移動到新位置。服務(wù)器返回此響應(yīng)(對 GET 或 HEAD 請求的響應(yīng))時,會自動將請求者轉(zhuǎn)到新位置。302(臨時移動)服務(wù)器目前從不同位置的網(wǎng)頁響應(yīng)請求,但請求者應(yīng)繼續(xù)使用原有位置來響應(yīng)以后的請求。此代碼與響應(yīng) GET 和 HEAD 請求的 301 代碼類似,會自動將請求者轉(zhuǎn)到不同的位置,
  • query_string: 是否傳遞獲取的查詢語句給重定向的url,默認為假,如果為真,該查詢語句會被添加到新的url,否則丟棄。
from django.views.generic.simple import redirect_tourlpatterns = patterns('',    ('^bar/$', redirect_to, {'url': '%%7Ejacob.', 'permanent': False}),)

 

需要注意的是,如果你想在url中使用%,必須使用%%來避免與python的字符串格式標記發(fā)送沖突

基于日期的通用視圖

名字所言,用于顯示基于日期型數(shù)據(jù)的明細頁,包含在django.views.generic.date_based模塊里面

django.views.generic.date_based.archive_index

描述

一個頂級的索引頁按照時間顯示最新的對象,除非設(shè)置allow_future為真,否則不會顯示超前當(dāng)前日期的對象

archive是存檔的意思

必選參數(shù)

  • queryset: 一個為存檔服務(wù)的對象的查詢集合
  • date_field: 被查詢的模型的DateField或者DateTimeField的屬性名,該屬性名用來判定那些對象能顯示在頁面上

可選參數(shù)

  • num_latest: 對象顯示的個數(shù),默認15個
  • template_name: 要被渲染的模板的全名(這可以讓你可以覆蓋默認的模板)
  • template_loader: 加載模板的模板加載器,默認是django.template.loader.
  • extra_context: 一個用來渲染模板的字典變量,默認是一個空字典
  • allow_empty: 一個布爾值說明是否允許返回的對象集合為空,如果為真,返回一個空頁面否則促發(fā)1個404錯誤,默認為真
  • context_PRocessors: 一個會被應(yīng)用到模板的模板上下文處理器的列表
  • mimetype: 返回的文檔類型,默認是DEFAULT_CONTENT_TYPE 里面的設(shè)置
  • allow_future:除非設(shè)置allow_future為真,否則不會顯示超前當(dāng)前日期的對象
  • template_object_name: 指定在模板上下文中使用的模板變量名,默認是latest

Template name:

如果沒有給定template_name, 將會使用 默認模板<app_label>/<model_name>_archive.html 

  • <model_name> 模型的全小寫,例如StaffMember --> staffmember.
  • <app_label> python全路徑的最右邊的部分,舉個例子, 你的模型的路徑是 apps/blog/models.py,那么app_label就是 blog.

Template context:

除了可選參數(shù)的extra_context外, 模板上下文還包含以下變量:

  • date_list: queryset.dates(date_field, 'year')[::-1].包含所有的年份

  • latest: num_latest個按date_field降序排序的對象列表,默認變量名為latest,如果指定template_object_name,則變量名變?yōu)橹付ㄖ?/p>

 

django.views.generic.date_based.archive_year

描述

返回一個顯示給定一個年份中所有可用月份的年度存檔頁面,除非設(shè)置allow_future為真,否則不會顯示超前當(dāng)前日期的對象

必選參數(shù)

  • year: 存檔服務(wù)需要的年份(四位數(shù)字)
  • queryset:同上
  • date_field: 同上

可選參數(shù)

  • template_name:同上
  • template_loader: 同上
  • extra_context: 同上
  • allow_empty:同上
  • context_processors:同上
  • template_object_name:同上
  • make_object_list:一個布爾變量表示是否檢索對象,如果為真,列表中的所有對象將被封裝成一個模板變量object_list,否則 object_list為空,默認為假
  • mimetype: 同上
  • allow_future: 同上

Template name:

如果沒有給定template_name, 將會使用 默認模板<app_label>/<model_name>_archive_year.html 

Template context:

除了可選參數(shù)的extra_context外, 模板上下文還包含以下變量

  • date_list: 類似上,包含所有的月份

  • year: 給定的年份(四位數(shù)字的字符串)

  • object_list: 如果make_object_list為真,列表中的所有對象將被封裝成一個模板變量object_list,否則 object_list為空,默認為假,需要注意的是,如果設(shè)置了template_object_name,那么object_list中的object將被替換成template_object_list的值,例如template_object_list='foo',那么object_list變?yōu)閒oo_list

django.views.generic.date_based.archive_month

描述

返回一個顯示給定月份的所有對象除非設(shè)置allow_future為真,否則不會顯示超前當(dāng)前日期的對象

必選參數(shù)

  • year:同上
  • month: 存檔服務(wù)所需的月份,格式見month_format參數(shù)
  • queryset: 同上
  • date_field: 同上

可選參數(shù)

  • month_format: 一個用來格式化月份的字符串,要求這個格式能被python的strftime()方法接受,默認是'%b',表示月份的三個字母的縮寫,如果想該用數(shù)字,請使用'%m'
  • template_name: 同上
  • template_loader: 同上
  • extra_context: 同上
  • allow_empty: 同上
  • context_processors: 同上
  • template_object_name: 同上
  • mimetype: 同上
  • allow_future:同上

Template name:

如果沒有給定template_name, 將會使用 默認模板<app_label>/<model_name>_archive_month.html 

Template context:

除了可選參數(shù)的extra_context外, 模板上下文還包含以下變量

  • date_list: 類似上,包含所有的天數(shù)
  • month: 一個datetime.date 對象代表給定的月份
  • next_month: 一個 datetime.date 對象代表下個月的第一天,如果下個月在今天之后,會被設(shè)為None
  • previous_month: 一個datetime.date 對象代表上個月的第一天,不想next_month,這永遠不會被設(shè)為None
  • object_list: 同上

django.views.generic.date_based.archive_week

描述

返回一個顯示給定星期的所有對象,除非設(shè)置allow_future為真,否則不會顯示超前當(dāng)前日期的對象

必選參數(shù)

  • year:同上
  • week: 一年中的某個星期(字符串),每個星期從周日開始,即是第幾個周日對應(yīng)的那一天
  • queryset: 同上
  • date_field: 同上

可選參數(shù)

  • template_name: 同上
  • template_loader: 同上
  • extra_context: 同上
  • allow_empty: 同上
  • context_processors: 同上
  • template_object_name: 同上
  • mimetype: 同上
  • allow_future:同上

Template name:

如果沒有給定template_name, 將會使用 默認模板<app_label>/<model_name>_archive_week.html 

Template context:

除了可選參數(shù)的extra_context外, 模板上下文還包含以下變量

  • week: 一個 datetime.date 對象代表該星期的第一天(即周日)
  • object_list: 同上

 

django.views.generic.date_based.archive_day

描述

返回一個顯示給定日期的所有對象,除非設(shè)置allow_future為真,否則超前當(dāng)前日期的請求都會引發(fā)404的錯誤(不管那天是否存在對象)

必選參數(shù)

  • year: 同上
  • month: 同上
  • day: 同上
  • queryset: 同上
  • date_field: 同上

可選參數(shù)

  • month_format:同上
  • day_format: 類似month_format,不過對于日期來說,默認的格式是%d(01-31的十進制數(shù)字)
  • template_name: 同上
  • template_loader: 同上
  • extra_context: 同上
  • allow_empty: 同上
  • context_processors: 同上
  • template_object_name: 同上
  • mimetype: 同上
  • allow_future:同上

Template name:

如果沒有給定template_name, 將會使用 默認模板<app_label>/<model_name>_archive_day.html 

Template context:

除了可選參數(shù)的extra_context外, 模板上下文還包含以下變量

  • day: 一個 datetime.date 對象代表給定的日期

  •  next_day: 一個datetime.date 代表下一天,如果下一天在今天之后,則被設(shè)為None

  •  previous_day: 一個 datetime.date 對象代表前一天,這永遠不會設(shè)為None

  • object_list: 同上

django.views.generic.date_based.archive_today

描述

返回今天的所有對象的存檔頁面,除了沒有年月日的指定外,基本和archive_day一樣

django.views.generic.date_based.object_detail

描述

返回一個顯示特定對象的頁面,除非設(shè)置allow_future為真,否則若該對象超前當(dāng)前日期會引發(fā)404的錯誤

必選參數(shù)

  • year: 同上
  • month: 同上
  • day: 同上
  • queryset: 同上
  • date_field: 同上
  •  object_id 和 (slug and slug_field) 至少要提供一個,如果你提供object_id, 那他必須是主鍵屬性的值

可選參數(shù)

  • month_format:同上
  • day_format: 類似month_format,不過對于日期來說,默認的格式是%d(01-31的十進制數(shù)字)
  • template_name: 同上
  • template_name_field: 這大概是一個拍腦袋的想法,這個參數(shù)給定的是,對象中那些可以用來命名模板的屬性名,假如說你的對象有一個域'the_template'包含的字符串是'foo.html',那么你可以指定template_name_field是the_template,那么通用視圖將會使用這個值來尋找使用模板foo.html
  • template_loader: 同上
  • extra_context: 同上
  • allow_empty: 同上
  • context_processors: 同上
  • template_object_name: 同上
  • mimetype: 同上
  • allow_future:同上

Template name:

如果沒有給定template_name, 將會使用 默認模板<app_label>/<model_name>_detail.html 

Template context:

除了可選參數(shù)的extra_context外, 模板上下文還包含以下變量

  • object:類似上面的object_list

 列表/詳細通用視圖

這個通用視圖和基于日期的很像,位于django.views.generic.list_detail模塊,不過基于日期的通用視圖只有簡單的兩個頁面:對象的列表和特定對象的詳細頁面

django.views.generic.list_detail.object_list

描述

返回一個顯示一個列表的對象的頁面

必選參數(shù)

  • queryset: 同上

可選參數(shù)

  • paginate_by: 每頁顯示多少個對象
  • page: 當(dāng)前的頁碼,是一個整數(shù)或者字符串'last'
  • template_name: 同上
  • template_name_field: 這大概是一個拍腦袋的想法,這個參數(shù)給定的是,對象中那些可以用來命名模板的屬性名,假如說你的對象有一個域'the_template'包含的字符串是'foo.html',那么你可以指定template_name_field是the_template,那么通用視圖將會使用這個值來尋找使用模板foo.html
  • template_loader: 同上
  • extra_context: 同上
  • allow_empty: 同上
  • context_processors: 同上
  • template_object_name: 同上
  • mimetype: 同上

Template name:

如果沒有給定template_name, 將會使用 默認模板<app_label>/<model_name>_list.html 

Template context:

除了可選參數(shù)的extra_context外, 模板上下文還包含以下變量

  • object_list:同上
  • is_paginated: 一個布爾型的變量指明當(dāng)前是否分頁了,當(dāng)對象個數(shù)少于上面給出的paginate_by時,被設(shè)為False,否則為真

 如果is_paginated為真的話,下面兩個變量在模板中將可用

  • paginator: An instance of django.core.paginator.Paginator.
  • page_obj: An instance of django.core.paginator.Page.

 分頁提示

當(dāng)使用了paginated_by是,django會將結(jié)果分頁,所以我們在一個在url中使用page number

urlconf:(r'^objects/page(?P<page>[0-9]+)/$', 'object_list', dict(info_dict))
url:
/objects/?page=3

需要注意的是,page是從1開始,而不是從零開始的,如果page不合法,將促發(fā)404錯誤

亦可以使用last,如

/objects/?page=last

django.views.generic.list_detail.object_detail

描述

返回一個顯示特定對象的頁面

必選參數(shù)

  • queryset: 一個包含該對象的查詢集
  •  object_id 和 (slug and slug_field) 至少要提供一個,如果你提供object_id, 那他必須是主鍵屬性的值

可選參數(shù)

  • template_name: 同上
  • template_name_field: 這大概是一個拍腦袋的想法,這個參數(shù)給定的是,對象中那些可以用來命名模板的屬性名,假如說你的對象有一個域'the_template'包含的字符串是'foo.html',那么你可以指定template_name_field是the_template,那么通用視圖將會使用這個值來尋找使用模板foo.html
  • template_loader: 同上
  • extra_context: 同上
  • allow_empty: 同上
  • context_processors: 同上
  • template_object_name: 同上
  • mimetype: 同上
  • allow_future:同上

Template name:

如果沒有給定template_name, 將會使用 默認模板<app_label>/<model_name>_detail.html 

Template context:

除了可選參數(shù)的extra_context外, 模板上下文還包含以下變量

  • object:類似上面的object_list

 生成/更新/刪除通用視圖

django.views.generic.create_update模塊封裝了生成/更新/刪除對象的一些函數(shù)

django.views.generic.create_update.create_object

描述

描述返回一個顯示生成對象的表單頁面,提交表單后顯示提示錯誤(如果有的話)然后保存對象

必選參數(shù)

  •  form_class和model至少要提供一個,如果你提供form_class,那必須是django.forms.ModelForm 的子類;如果提供model,必須包含標準的ModelForm

可選參數(shù)

  • post_save_redirect: 保存對象后跳轉(zhuǎn)的url,默認是該對象的object.get_absolute_url()方法

  • login_required: 一個布爾值決定是否需要登錄才能看到這個頁面并保存修改,默認是假;如果為真,若不登陸,將轉(zhuǎn)到登錄頁面(當(dāng)然了,這個適合django的認證系統(tǒng)綁定的)

  • template_name: 同上
  • template_loader: 同上
  • extra_context: 同上
  • context_processors: 同上

Template name:

如果沒有給定template_name, 將會使用 默認模板<app_label>/<model_name>_form.html 

Template context:

除了可選參數(shù)的extra_context外, 模板上下文還包含以下變量

  • form:一個django.forms.ModelForm實例

django.views.generic.create_update.update_object

描述

描述返回一個顯示編輯對象的表單頁面,提交表單后顯示提示錯誤(如果有的話)然后保存對象

必選參數(shù)

  •  form_class和model至少要提供一個,如果你提供form_class,那必須是django.forms.ModelForm 的子類;如果提供model,必須包含標準的ModelForm
  •  object_id 和 (slug and slug_field) 至少要提供一個,如果你提供object_id, 那他必須是主鍵屬性的值

可選參數(shù)

  • post_save_redirect: 保存對象后跳轉(zhuǎn)的url,默認是該對象的object.get_absolute_url()方法

  • login_required: 一個布爾值決定是否需要登錄才能看到這個頁面并保存修改,默認是假;如果為真,若不登陸,將轉(zhuǎn)到登錄頁面(當(dāng)然了,這個適合django的認證系統(tǒng)綁定的)

  • template_name: 同上
  • template_loader: 同上
  • extra_context: 同上
  • context_processors: 同上

Template name:

如果沒有給定template_name, 將會使用 默認模板<app_label>/<model_name>_form.html 

Template context:

除了可選參數(shù)的extra_context外, 模板上下文還包含以下變量

  • form:一個django.forms.ModelForm實例
  • object: 同上

django.views.generic.create_update.delete_object

描述

一個視圖,展示一個信息頁面然后刪除這個對象;僅當(dāng)request method是post的時候,對象才會被刪除;若是通過get請求該視圖函數(shù),將展示一個post到相同url的表單頁面(信息頁面)

必選參數(shù)

  •  form_class和model至少要提供一個,如果你提供form_class,那必須是django.forms.ModelForm 的子類;如果提供model,必須包含標準的ModelForm
  • post_delete_redirect: 刪除后重定向的url

可選參數(shù)

  • post_save_redirect: 保存對象后跳轉(zhuǎn)的url,默認是該對象的object.get_absolute_url()方法

  • login_required: 一個布爾值決定是否需要登錄才能看到這個頁面并保存修改,默認是假;如果為真,若不登陸,將轉(zhuǎn)到登錄頁面(當(dāng)然了,這個適合django的認證系統(tǒng)綁定的)

  • template_name: 同上
  • template_loader: 同上
  • extra_context: 同上
  • context_processors: 同上

Template name:

如果沒有給定template_name, 將會使用 默認模板<app_label>/<model_name>_confirm_delete.html 

Template context:

除了可選參數(shù)的extra_context外, 模板上下文還包含以下變量

  • object: 同上

下面我們來看一些例子吧

models.py

from django.db import modelsfrom django.contrib import admin
from sysu.ThumbnailImageField import ThumbnailImageField
# Create your models here.class Item(models.Model): """docstring for Item""" name = models.CharField(max_length=250) description = models.TextField() class Meta: ordering =['name'] def __unicode__(self): return self.name @models.permalink def get_absolute_url(self): return ('item_detail',None,{'object_id':self.id}) class Photo(models.Model): """docstring for Photo""" item = models.ForeignKey(Item) title = models.CharField(max_length=100) image = ThumbnailImageField(upload_to='photos') caption = models.CharField(max_length=250) class Meta: ordering = ['title'] def __unicode__(self): return self.title @models.permalink def get_absolute_url(self): return ('photo_detail',None,{'object_id':self.id})class PhotoInline(admin.StackedInline): """docstring for PhotoInline""" model = Photoclass ItemAdmin(admin.ModelAdmin): """docstring for ItemAdmin""" inlines = [PhotoInline]admin.site.register(Item,ItemAdmin)admin.site.register(Photo)import datetimefrom django.db import modelsfrom django.db.models import permalinkfrom django.contrib.auth.models import Userfrom django.contrib import adminfrom markdown import markdownVIEWABLES_STATUS = [3,4]class ViewableManager(models.Manager): """docstring for ViewableManager""" def get_query_set(self): default_queryset = super(ViewableManager, self).get_query_set() return default_queryset.filter(status__in=VIEWABLES_STATUS)class Category(models.Model): """docstring for Category""" label = models.CharField(blank=True,max_length=50) slug = models.SlugField() class Meta: verbose_name_plural = "categories" def __unicode__(self): return self.labelclass CategoryAdmin(admin.ModelAdmin): """docstring for CategoryAdmin""" prepopulated_fields = {'slug':('label',) }admin.site.register(Category,CategoryAdmin) class Stroy(models.Model): """docstring for Stroy""" STATUS_CHOICES = ( (1,"Needs Edit"), (2,"Needs Approval"), (3,"Published"), (4,"Archived"), ) title = models.CharField(max_length=100) slug = models.SlugField() category = models.ForeignKey(Category) markdown_content = models.TextField() html_content = models.TextField(editable=False) owner = models.ForeignKey(User) status = models.IntegerField(choices=STATUS_CHOICES,default=1) created = models.DateTimeField(default=datetime.datetime.now()) modified = models.DateTimeField(default=datetime.datetime.now()) class Meta: ordering = ['modified'] verbose_name_plural = "stories" def save(self): self.html_content = markdown(self.html_content) self.modified = datetime.datetime.now() super(Stroy, self).save() admin_objects = models.Manager() objects = ViewableManager() @permalink def get_absolute_url(self): return ("cms-story",None,{'slug':self.slug})class StroyAdmin(admin.ModelAdmin): """docstring for StroyAdmin""" list_display = ('title','owner','status','created','modified') search_fields = ('title','content') list_filter = ('status','owner','created','modified') prepopulated_fields = {'slug':('title',) } fieldsets = [ ("Title",{"fields":("title","slug","category")}), ("Content",{"fields":("markdown_content","owner")}), ("Status",{"classes":("monospace",),"fields":("status","created","modified")}) ]admin.site.register(Stroy,StroyAdmin)

 

ThumbnailImageField.py

# ThumbnailImageField.pyfrom django.db.models.fields.files import ImageField,ImageFieldFilefrom PIL import Imageimport osdef _add_thumb(s):    parts = s.split(".")    parts.insert(-1,"thumb")    if parts[-1].lower() not in ['jpeg','jpg']:        parts[-1]='jpg'    return ".".join(parts)class ThumbnailImageFieldFile(ImageFieldFile):    def _get_thumb_path(self):        return _add_thumb(self.path)    thumb_path = property(_get_thumb_path)    def _get_thumb_url(self):        return _add_thumb(self.url)    thumb_url = property(_get_thumb_url)    def save(self,name,content,save=True):        super(ThumbnailImageFieldFile, self).save(name,content,save)        img = Image.open(self.path)        img.thumbnail(            (self.field.thumb_width,self.field.thumb_height),            Image.ANTIALIAS        )        img.save(self.thumb_path,'JPEG')    def delete(self,save=True):        if os.path.exists(self.thumb_path):            os.remove(self.thumb_path)        super(ThumbnailImageFieldFile, self).delete(save)        class ThumbnailImageField(ImageField):    """docstring for ThumbnailImageField"""    attr_class = ThumbnailImageFieldFile    def __init__(self,thumb_width=128,thumb_height=128,*args,**kwargs):        self.thumb_width = thumb_width        self.thumb_height = thumb_height        super(ThumbnailImageField, self).__init__(*args,**kwargs)

 

urls.py

from django.conf.urls import patterns, include, urlfrom sysu.models import Item,Photo,Stroy# Uncomment the next two lines to enable the admin:from django.contrib import adminadmin.autodiscover()info_dict = {'queryset':Stroy.objects.all()}urlpatterns =patterns('django.views.generic',    url(r'^cms/search/$',search,name="cms-search"),    url(r'^cms/(?P<slug>[-/w]+)/$', 'list_detail.object_detail',        kwargs={            'queryset':Stroy.objects.all(),            'template_name':'story_detail.html',            'template_object_name':'story'            },            name="cms-story"        ),    url(r'^cms/$', 'list_detail.object_list',        kwargs={            'queryset':Stroy.objects.all(),            'template_name':'story_list.html',            'template_object_name':'story'            },            name="cms-home"        ),    url(r'^cms/category/(?P<slug>[-/w]+)/$', category,name="cms-category"),    # url(r'^gallery/$', 'simple.direct_to_template',    #     kwargs={    #         'template':'in.html',    #         'extra_context':{'item_list':lambda:Item.objects.all()}    #     },    #     name='index'    #     ),    # url(r'^gallery/items/$', 'list_detail.object_list',    #     kwargs={    #         'queryset':Item.objects.all(),    #         'template_name':'item_list.html',    #         'allow_empty':True },    #         name='item_list'    #     ),    # url(r'^items/(?P<object_id>/d+)/$', 'list_detail.object_detail',    #     kwargs={    #         'queryset':Item.objects.all(),    #         'template_name':'items_detail.html'    #         },    #         name='item_detail'    #     ),    # url(r'^gallery/photos/(?P<object_id>/d+)$', 'list_detail.object_detail',    #     kwargs={    #         'queryset':Photo.objects.all(),    #         'template_name':'photos_detail.html'    #         },    #         name='photo_detail'    #     ),    # url(r'pages/', include('django.contrib.flatpages.urls')),)

 

都是以前寫過的代碼,僅供大家參考,有什么大家可以隨時交流

 


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 和政县| 北票市| 万山特区| 礼泉县| 象州县| 德昌县| 九寨沟县| 孟津县| 霍州市| 曲沃县| 台东市| 新密市| 志丹县| 孙吴县| 鲁山县| 云霄县| 沐川县| 祁阳县| 长顺县| 鄂州市| 汕尾市| 葵青区| 昂仁县| 旬邑县| 潼南县| 嘉兴市| 化隆| 大新县| 芷江| 遵义市| 顺平县| 凉城县| 西平县| 桑日县| 新营市| 丽水市| 曲阜市| 祁阳县| 乡宁县| 合阳县| 鹿邑县|