当前位置: 首页 > news >正文

南宁学做网站wordpress中介模板

南宁学做网站,wordpress中介模板,网站建设liluokj,网站机房建设目录 1、什么是序列化和反序列化#xff1f; 2、Django REST Framework中的序列化和反序列化 3、安装与配置#xff08;第10章是从零开始#xff09; 3.1 安装 3.2 配置 4、基本使用 4.1 创建序列化器 4.2 使用序列化器#xff08;将数据序列化返回给前端#xff…目录 1、什么是序列化和反序列化 2、Django REST Framework中的序列化和反序列化 3、安装与配置第10章是从零开始 3.1 安装 3.2 配置 4、基本使用 4.1 创建序列化器 4.2 使用序列化器将数据序列化返回给前端 4.3 配置url 4.4 测试 4.5 反序列化从前端获取数据反序列化 4.5.1 url配置 4.5.2 测试 4.6 数据验证(将4.1的序列化设置验证方式多样化) 5、一对多模型序列化 5.1 模型定义 5.2 序列化器定义 5.3 使用序列化器 5.4 url配置 5.5 测试 6、多对多关系 6.1 模型定义 6.2 序列化器定义 6.3 使用序列化器 6.4 url配置 6.5 测试 7、自定义字段 7.1 模型定义 7.2 序列化器定义 7.3 使用序列化器 7.4 配置url 7.5 测试 7.6 使用depth优化序列化器 8、来个多表级联 8.1 模型定义 8.2 序列化器定义 8.3 使用序列化器 8.4 配置URL 8.5 测试 9、总结 10、前期工作 10.1 创建django项目 10.2 安装库 10.3 配置 10.3.1 创建mysql数据库drf 10.3.2 配置mysql数据 10.3.3 settings配置 10.3.4 apps.py 10.3.5 DRFDemo的urls配置 10.3.6 drf的urls配置 10.3.7 新建库表之后操作非必须 10.4 同步数据库 10.5 创建超级用户 10.6 启动服务 10.7 访问 10.7.1 后端管理页面 10.7.2 默认页面 前言Django REST Framework 序列化与反序列化详解包含一对一一对多多对多的关系。  在当今的Web开发中前后端分离已经成为一种趋势。在这种模式下后端主要负责数据处理和业务逻辑而前端则专注于用户界面和交互。为了有效地在前后端之间传输数据通常使用JSON这种轻量级的数据交换格式。Django REST FrameworkDRF作为一个强大的Django扩展提供了便捷的REST API开发框架其中的序列化和反序列化功能正是实现这一传输的关键。 1、什么是序列化和反序列化 序列化将Python对象转换为JSON或其他文本格式以便通过HTTP进行传输。反序列化将JSON数据转换回Python对象以便在后端进行处理。 2、Django REST Framework中的序列化和反序列化 DRF通过序列化器Serializer来实现这一功能。序列化器不仅负责数据的转换还提供了数据验证和渲染的功能。 3、安装与配置第10章是从零开始 3.1 安装 首先你需要安装Django REST Framework pip install djangorestframework 3.2 配置 然后在你的settings.py文件中将rest_framework添加到INSTALLED_APPS中 INSTALLED_APPS [ ... rest_framework, ... ] 4、基本使用 4.1 创建序列化器 序列化器通常定义在应用程序下的serializers.py文件中。你可以通过继承serializers.Serializer或serializers.ModelSerializer来创建自定义序列化器。 例如假设你有一个Book模型 from django.db import models class Book(models.Model): title models.CharField(max_length100) author models.CharField(max_length50) publication_date models.DateField()class Meta:managed Truedb_table bookverbose_name_plural 书籍表 你可以创建一个对应的序列化器 from rest_framework import serializers from .models import Book class BookSerializer(serializers.ModelSerializer): class Meta: model Book fields __all__ # 或者指定需要序列化的字段如 [title, author, publication_date] 4.2 使用序列化器将数据序列化返回给前端 在视图中你可以通过实例化序列化器对象并将要序列化的数据传递给instance参数对于单个对象或manyTrue对于多个对象来进行序列化。 from rest_framework.views import APIView from rest_framework.response import Response from .models import Book from .serializers import BookSerializer class BookListView(APIView): def get(self, request, *args, **kwargs): books Book.objects.all() serializer BookSerializer(books, manyTrue) return Response(serializer.data) 4.3 配置url urlpatterns [# path(, views.index, nameindex), # 定义一个根路由指向 index 视图# 你可以在这里添加更多的路由path(books/, BookListView.as_view(), namebook-list), ] 4.4 测试 返回数据 [{id: 1,title: 西游记,author: 吴承恩,publication_date: 2024-10-29},{id: 2,title: 红楼梦,author: 曹雪芹,publication_date: 2024-10-30},{id: 3,title: 水浒传,author: 施耐庵,publication_date: 2024-10-07},{id: 4,title: 三国演义,author: 罗贯中,publication_date: 2024-10-11} ] 4.5 反序列化从前端获取数据反序列化 对于反序列化你需要将前端传来的JSON数据传递给data参数并调用is_valid()方法进行验证。如果验证通过你可以调用save()方法将数据存储到数据库中。  class BookCreateView(APIView): def post(self, request, *args, **kwargs): serializer BookSerializer(datarequest.data) if serializer.is_valid(): serializer.save() return Response(serializer.data, status201) return Response(serializer.errors, status400) 4.5.1 url配置 urlpatterns [ path(books/, BookListView.as_view(), namebook-list), path(books/create/, BookCreateView.as_view(), namebook-create), # 新增的路径 ] 4.5.2 测试 现在你可以使用工具如 Postman来测试你的创建接口。发送一个 POST 请求到 http://localhost:8000/books/create/并在请求体中提供书籍的数据JSON 格式  { title: Django REST Framework 序列化与反序列化详解, author: 春天的菠菜, publication_date: 2024-11-01 } 4.6 数据验证(将4.1的序列化设置验证方式多样化) 在序列化器中你可以通过指定字段的验证参数如max_length、min_length、required等来进行数据验证。此外你还可以定义validate_field_name方法来对单个字段进行自定义验证或者定义validate方法来对多个字段进行联合验证。 class BookSerializer(serializers.ModelSerializer): title serializers.CharField(max_length100, min_length5) def validate_title(self, value): if badword in value.lower(): raise serializers.ValidationError(Title contains bad words.) return value def validate(self, attrs): if attrs[author] Unknown: raise serializers.ValidationError({author: Author cannot be Unknown.}) return attrs class Meta: model Book fields __all__ 5、一对多模型序列化 5.1 模型定义 class Department(models.Model):name models.CharField(max_length100)description models.TextField(blankTrue, nullTrue)def __str__(self):return self.nameclass Meta:managed Truedb_table departmentclass Employee(models.Model):first_name models.CharField(max_length100)last_name models.CharField(max_length100)department models.ForeignKey(Department, on_deletemodels.CASCADE)hire_date models.DateField()def __str__(self):return f{self.first_name} {self.last_name}class Meta:managed Truedb_table employee 5.2 序列化器定义 在序列化器中你可以使用serializers.PrimaryKeyRelatedField或serializers.StringRelatedField来引用关联对象的主键或字符串表示或者使用嵌套的序列化器来表示关联对象的完整数据。 from rest_framework import serializers from .models import Department, Employeeclass DepartmentSerializer(serializers.ModelSerializer):class Meta:model Departmentfields [id, name, description]class EmployeeSerializer(serializers.ModelSerializer):department DepartmentSerializer() # 使用嵌套的序列化器class Meta:model Employeefields [id, first_name, last_name, department, hire_date] 在这个例子中EmployeeSerializer中的department字段使用了DepartmentSerializer作为嵌套序列化器这样当序列化Employee对象时department字段将包含完整的Department对象数据。 5.3 使用序列化器 # newapp/views.py from rest_framework.views import APIView from rest_framework.response import Response from .models import Employee from .serializers import EmployeeSerializerclass EmployeeListView(APIView):def get(self, request, *args, **kwargs):employees Employee.objects.all().select_related(department) # 使用select_related优化查询serializer EmployeeSerializer(employees, manyTrue)return Response(serializer.data) 5.4 url配置 # newapp/urls.py from django.urls import path from .views import EmployeeListViewurlpatterns [path(employees/, EmployeeListView.as_view(), nameemployee-list), ] 5.5 测试 返回的数据展示 [{id: 1,first_name: Michelle,last_name: Jackson,department: {id: 1,name: 公关部,description: 外部公关},hire_date: 2024-10-01},{id: 2,first_name: John,last_name: Smith,department: {id: 2,name: 市场部,description: 开拓市场},hire_date: 2024-10-30},{id: 3,first_name: Mary,last_name: Johnson,department: {id: 1,name: 公关部,description: 外部公关},hire_date: 2024-10-30} ] 6、多对多关系 现在假设我们有一个 Role 模型和一个 Permission 模型其中 Role 模型有一个 permissions 字段指向 Permission 模型表示每个角色拥有的权限。这就是一个典型的多对多关系因为一个角色可以拥有多个权限同时一个权限也可以被多个角色拥有。 6.1 模型定义 # newapp/models.py from django.db import modelsclass Permission(models.Model):name models.CharField(max_length100)description models.TextField(blankTrue, nullTrue)def __str__(self):return self.nameclass Role(models.Model):name models.CharField(max_length100)permissions models.ManyToManyField(Permission)def __str__(self):return self.name 库里实际生成了三张表  6.2 序列化器定义 对于多对多关系你可以使用serializers.PrimaryKeyRelatedField的manyTrue参数来引用关联对象的主键列表或者使用嵌套的序列化器列表来表示关联对象的完整数据。 # newapp/serializers.py from rest_framework import serializers from .models import Permission, Roleclass PermissionSerializer(serializers.ModelSerializer):class Meta:model Permissionfields [id, name, description]class RoleSerializer(serializers.ModelSerializer):permissions PermissionSerializer(manyTrue) # 使用嵌套的序列化器列表class Meta:model Rolefields [id, name, permissions] 在这个例子中RoleSerializer 中的 permissions 字段使用了 PermissionSerializer 作为嵌套序列化器并且设置了 manyTrue这样当序列化 Role 对象时permissions 字段将包含 Permission 对象数据的列表。 6.3 使用序列化器 无论是对于一对多关系还是多对多关系使用序列化器的方式都是相同的。你可以在视图中实例化序列化器对象并将要序列化的数据传递给instance参数对于单个对象或manyTrue对于多个对象然后进行序列化。 # newapp/views.py from rest_framework.views import APIView from rest_framework.response import Response from .models import Role from .serializers import RoleSerializerclass RoleListView(APIView):def get(self, request, *args, **kwargs):roles Role.objects.all().prefetch_related(permissions) # 使用prefetch_related优化查询serializer RoleSerializer(roles, manyTrue)return Response(serializer.data) 注意在上面的例子中我们使用了prefetch_related来优化查询性能这样可以减少数据库查询的次数。 6.4 url配置 # newapp/urls.py from django.urls import path from .views import RoleListViewurlpatterns [path(roles/, RoleListView.as_view(), namerole-list), ] 6.5 测试 返回数据 [{id: 1,name: 经理,permissions: [{id: 1,name: 人员跟踪,description: 人员动向},{id: 2,name: 职能级别,description: 客户职能级别},{id: 3,name: 固定资产,description: 固定资产}]},{id: 2,name: 部长,permissions: [{id: 2,name: 职能级别,description: 客户职能级别},{id: 3,name: 固定资产,description: 固定资产}]} ] 7、自定义字段 包含choices类型、外键、ManyToMany 7.1 模型定义 # newapp/models.py from django.db import modelsclass Team(models.Model):name models.CharField(max_length100)description models.TextField(blankTrue, nullTrue)def __str__(self):return self.nameclass Task(models.Model):name models.CharField(max_length100)description models.TextField(blankTrue, nullTrue)def __str__(self):return self.nameclass Member(models.Model):STATUS_CHOICES [(0, 无效的),(1, 活跃的),(2, 待定的)]first_name models.CharField(max_length100)last_name models.CharField(max_length100)status models.IntegerField(choicesSTATUS_CHOICES, default1)team models.ForeignKey(Team, on_deletemodels.CASCADE)tasks models.ManyToManyField(Task, blankTrue)def __str__(self):return f{self.first_name} {self.last_name} 7.2 序列化器定义 定义 TeamSerializer、TaskSerializer 和 MemberSerializer并在 MemberSerializer 中嵌套 TeamSerializer 和 TaskSerializer 列表并添加自定义字段 status_name 来显示 status 的可读名称。 # newapp/serializers.py from rest_framework import serializers from .models import Team, Task, Memberclass TeamSerializer(serializers.ModelSerializer):class Meta:model Teamfields [id, name, description]class TaskSerializer(serializers.ModelSerializer):class Meta:model Taskfields [id, name, description]class MemberSerializer(serializers.ModelSerializer):team TeamSerializer(read_onlyTrue)tasks TaskSerializer(manyTrue, read_onlyTrue)status_name serializers.CharField(sourceget_status_display, read_onlyTrue)class Meta:model Memberfields [id, first_name, last_name, status, status_name, team, tasks]def to_representation(self, instance):representation super().to_representation(instance)# 添加自定义字段任务数量representation[task_count] instance.tasks.count()# 你可以在这里添加更多的自定义字段或修改现有的字段# 例如你可能想根据某些条件改变状态名称的颜色# representation[status_color] green if instance.status 1 else redreturn representation to_representation 方法它会在序列化每个 Member实例时被调用。这个方法允许我们添加自定义字段到序列化的数据中。在这个例子中我们添加了一个 task_count 字段它显示了每个成员的任务数量。  7.3 使用序列化器 # newapp/views.py from rest_framework.views import APIView from .models import Member from .serializers import MemberSerializer from rest_framework import statusclass MemberListView(APIView):def get(self, request, *args, **kwargs):members Member.objects.all().prefetch_related(tasks).select_related(team) # 使用 prefetch_related 和 select_related 优化查询serializer MemberSerializer(members, manyTrue)return Response(serializer.data, statusstatus.HTTP_200_OK) 7.4 配置url urlpatterns [ path(members/, MemberListView.as_view(), namemember-list), ] 7.5 测试 返回数据 [{id: 1,first_name: Mary,last_name: Smith,status: 1,status_name: 活跃的,team: {id: 2,name: 傲世天骄,description: 绝色天骄团队},tasks: [],task_count: 0},{id: 2,first_name: Michelle,last_name: Jackson,status: 2,status_name: 待定的,team: {id: 1,name: 海豹突击队,description: 精英男士},tasks: [{id: 1,name: 拜访傲视群雄世家,description: 拜访傲视群雄世家获取订单需求},{id: 2,name: 拜访独孤求败世家,description: 拜访独孤求败世家获取人脉资源},{id: 3,name: 拜访东方不败世家,description: 拜访东方不败世家提供美颜代言}],task_count: 3},{id: 3,first_name: John,last_name: Jackson,status: 1,status_name: 活跃的,team: {id: 2,name: 傲世天骄,description: 绝色天骄团队},tasks: [{id: 1,name: 拜访傲视群雄世家,description: 拜访傲视群雄世家获取订单需求},{id: 2,name: 拜访独孤求败世家,description: 拜访独孤求败世家获取人脉资源},{id: 3,name: 拜访东方不败世家,description: 拜访东方不败世家提供美颜代言}],task_count: 3} ] 7.6 使用depth优化序列化器 class MemberSerializer(serializers.ModelSerializer):status_name serializers.CharField(sourceget_status_display, read_onlyTrue)class Meta:model Memberfields [id, first_name, last_name, status, status_name, team, tasks]depth 1 # 设置 depth1 来自动序列化关联对象def to_representation(self, instance):representation super().to_representation(instance)# 添加自定义字段任务数量representation[task_count] instance.tasks.count()# 你可以在这里添加更多的自定义字段或修改现有的字段# 例如你可能想根据某些条件改变状态名称的颜色# representation[status_color] green if instance.status 1 else redreturn representation 这样做的好处是代码变得更简洁了不需要单独定义 TeamSerializer 和 TaskSerializer也不需要显式地设置它们为只读或使用 manyTrue。但是请注意以下几点 性能问题使用 depth 可能会导致额外的数据库查询特别是在处理多对多关系时。灵活性减少你将无法轻松地添加自定义字段到嵌套的序列化器中。控制力减弱你将无法控制嵌套序列化器的具体行为例如选择要包含的字段 8、来个多表级联 设计一个多表查询系统包括省、市、县/区、街道、居委会以及人员信息。我们将使用 Django 模型来定义这些表并创建相应的序列化器和视图。最后我们会配置 URL 并提供测试逻辑。 8.1 模型定义 我们首先定义六张表Province省、City市、County县/区、Street街道、Community居委会和 Person人员 # newapp/models.py from django.db import modelsclass Province(models.Model):name models.CharField(max_length100)description models.TextField(blankTrue, nullTrue)def __str__(self):return self.nameclass City(models.Model):name models.CharField(max_length100)province models.ForeignKey(Province, on_deletemodels.CASCADE)description models.TextField(blankTrue, nullTrue)def __str__(self):return self.nameclass County(models.Model):name models.CharField(max_length100)city models.ForeignKey(City, on_deletemodels.CASCADE)description models.TextField(blankTrue, nullTrue)def __str__(self):return self.nameclass Street(models.Model):name models.CharField(max_length100)county models.ForeignKey(County, on_deletemodels.CASCADE)description models.TextField(blankTrue, nullTrue)def __str__(self):return self.nameclass Community(models.Model):name models.CharField(max_length100)street models.ForeignKey(Street, on_deletemodels.CASCADE)description models.TextField(blankTrue, nullTrue)def __str__(self):return self.nameclass Person(models.Model):first_name models.CharField(max_length100)last_name models.CharField(max_length100)community models.ForeignKey(Community, on_deletemodels.CASCADE)def __str__(self):return f{self.first_name} {self.last_name} 8.2 序列化器定义 我们将使用 depth 参数来自动序列化关联对象。我们只需要为 Person 定义一个序列化器并设置 depth 参数 # newapp/serializers.py from rest_framework import serializers from .models import Personclass PersonSerializer(serializers.ModelSerializer):full_address serializers.SerializerMethodField()class Meta:model Personfields [id, first_name, last_name, community, full_address]depth 5 # 设置 depth 为 5 来自动序列化所有关联对象def get_full_address(self, obj):parts [obj.community.street.county.city.province.name,obj.community.street.county.city.name,obj.community.street.county.name,obj.community.street.name,obj.community.name]return , .join(parts)def to_representation(self, instance):representation super().to_representation(instance)# 可以在这里添加其他自定义字段return representation 8.3 使用序列化器 我们定义一个 APIView 来处理获取所有人员的请求并使用 select_related 和 prefetch_related 来优化查询 # newapp/views.py from rest_framework.views import APIView from rest_framework.response import Response from rest_framework import status from .models import Person from .serializers import PersonSerializerclass PersonListView(APIView):def get(self, request, *args, **kwargs):persons Person.objects.all().select_related(community__street__county__city__province)serializer PersonSerializer(persons, manyTrue)return Response(serializer.data, statusstatus.HTTP_200_OK) 8.4 配置URL # newapp/urls.py from django.urls import path from .views import PersonListViewurlpatterns [path(persons/, PersonListView.as_view(), nameperson-list), ] 8.5 测试 返回数据 [{id: 1,first_name: Michelle,last_name: Johnson,community: {id: 1,name: 青年路社区居民委员会,description: ,street: {id: 1,name: 湖滨街道,description: ,county: {id: 1,name: 上城区,description: ,city: {id: 2,name: 杭州市,description: ,province: {id: 2,name: 浙江省,description: }}}}},full_address: 浙江省, 杭州市, 上城区, 湖滨街道, 青年路社区居民委员会},{id: 2,first_name: Mary,last_name: Smith,community: {id: 1,name: 青年路社区居民委员会,description: ,street: {id: 1,name: 湖滨街道,description: ,county: {id: 1,name: 上城区,description: ,city: {id: 2,name: 杭州市,description: ,province: {id: 2,name: 浙江省,description: }}}}},full_address: 浙江省, 杭州市, 上城区, 湖滨街道, 青年路社区居民委员会},{id: 3,first_name: John,last_name: Smith,community: {id: 2,name: 百子亭社区,description: ,street: {id: 2,name: 玄武门街道,description: ,county: {id: 2,name: 玄武区,description: ,city: {id: 1,name: 南京市,description: 市区,province: {id: 1,name: 江苏省,description: }}}}},full_address: 江苏省, 南京市, 玄武区, 玄武门街道, 百子亭社区} ] 9、总结 Django REST Framework的序列化和反序列化功能为开发RESTful API提供了极大的便利。通过定义序列化器你可以轻松地将Python对象转换为JSON格式并从JSON数据恢复为Python对象。同时序列化器还提供了强大的数据验证功能确保数据的合法性和完整性。掌握这些技能将帮助你更高效地开发前后端分离的Web应用。 扩展知识点在5与6章节 使用了这2个知识点prefetch_related 适用于“一对多”的关系即外键和多对多关系。如果你有“多对一”或“多对多”的关系并且你想优化查询可以使用 select_related。 在使用 prefetch_related 或 select_related 时你需要确保你的查询逻辑允许这种优化并且你的数据库设计和索引也支持这种优化。此外过度使用 prefetch_related 和 select_related 可能会导致内存使用增加因为它们会一次性加载更多的数据到内存中。因此在使用这些优化技术时需要根据实际情况进行权衡。 10、前期工作 10.1 创建django项目 10.2 安装库 pip install pymysql# rest_framework pip install djangorestframework# django后台页面美化 simpleui 非必须 pip install django-simpleui -i https://pypi.tuna.tsinghua.edu.cn/simple 10.3 配置 10.3.1 创建mysql数据库drf 略 10.3.2 配置mysql数据 DRFDemo下的__init__.py配置 import pymysql pymysql.install_as_MySQLdb() 10.3.3 settings配置 INSTALLED_APPS [simpleui,django.contrib.admin,django.contrib.auth,django.contrib.contenttypes,django.contrib.sessions,django.contrib.messages,django.contrib.staticfiles,drf.apps.DrfConfig,rest_framework,simpleui ]DATABASES {default: {ENGINE: django.db.backends.mysql, # 数据库的类型NAME: drf, # 所使用的的数据库的名字USER: root, # 数据库服务器的用户PASSWORD: dddd, # 密码HOST: IP, # 主机PORT: 3306, # 端口} }# 国际化配置 LANGUAGE_CODE zh-hansTIME_ZONE Asia/ShanghaiUSE_TZ FalseUSE_I18N True 10.3.4 apps.py from django.apps import AppConfigclass DrfConfig(AppConfig):default_auto_field django.db.models.BigAutoFieldname drfverbose_name 首页欢迎你10.3.5 DRFDemo的urls配置 from django.contrib import admin from django.urls import path, includeurlpatterns [path(admin/, admin.site.urls),path(smart/, include(smart.urls)),]10.3.6 drf的urls配置 在drf下新建urls.py 后续的路由在这里配置 from django.urls import path from . import views # 假设你的视图函数定义在 views.py 中urlpatterns [# path(, views.index, nameindex), # 定义一个根路由指向 index 视图# 你可以在这里添加更多的路由 ] 10.3.7 新建库表之后操作非必须 新库表这里配置就可在后台页面操作  from .models import Book from django.contrib import admin# Register your models here. admin.site.register(Book)10.4 同步数据库 python manage.py makemigrations python manage.py migrate 10.5 创建超级用户 # 输入命令 createsuperuser# 创建用户root root# 邮箱 market163.com#密码 123456# 再次输入密码 123456# 提示密码不安全输入Y y 10.6 启动服务 python manage.py runserver10.7 访问 10.7.1 后端管理页面 http://127.0.0.1:8000/admin/ 10.7.2 默认页面 http://127.0.0.1:8000/
文章转载自:
http://www.morning.dtcsp.cn.gov.cn.dtcsp.cn
http://www.morning.jkzq.cn.gov.cn.jkzq.cn
http://www.morning.jrbyz.cn.gov.cn.jrbyz.cn
http://www.morning.zdbfl.cn.gov.cn.zdbfl.cn
http://www.morning.khtyz.cn.gov.cn.khtyz.cn
http://www.morning.pjwrl.cn.gov.cn.pjwrl.cn
http://www.morning.krjrb.cn.gov.cn.krjrb.cn
http://www.morning.kpcdc.cn.gov.cn.kpcdc.cn
http://www.morning.qgwpx.cn.gov.cn.qgwpx.cn
http://www.morning.mlcwl.cn.gov.cn.mlcwl.cn
http://www.morning.ftldl.cn.gov.cn.ftldl.cn
http://www.morning.xfhms.cn.gov.cn.xfhms.cn
http://www.morning.jcyyh.cn.gov.cn.jcyyh.cn
http://www.morning.qcrhb.cn.gov.cn.qcrhb.cn
http://www.morning.pgfkl.cn.gov.cn.pgfkl.cn
http://www.morning.slwqt.cn.gov.cn.slwqt.cn
http://www.morning.shxrn.cn.gov.cn.shxrn.cn
http://www.morning.tpnch.cn.gov.cn.tpnch.cn
http://www.morning.xpzgg.cn.gov.cn.xpzgg.cn
http://www.morning.zkqwk.cn.gov.cn.zkqwk.cn
http://www.morning.xlmgq.cn.gov.cn.xlmgq.cn
http://www.morning.qmpbs.cn.gov.cn.qmpbs.cn
http://www.morning.ymfzd.cn.gov.cn.ymfzd.cn
http://www.morning.qsswb.cn.gov.cn.qsswb.cn
http://www.morning.dqcpm.cn.gov.cn.dqcpm.cn
http://www.morning.rmyt.cn.gov.cn.rmyt.cn
http://www.morning.dxqfh.cn.gov.cn.dxqfh.cn
http://www.morning.sgfnx.cn.gov.cn.sgfnx.cn
http://www.morning.ntzfl.cn.gov.cn.ntzfl.cn
http://www.morning.thpns.cn.gov.cn.thpns.cn
http://www.morning.mlhfr.cn.gov.cn.mlhfr.cn
http://www.morning.rgxll.cn.gov.cn.rgxll.cn
http://www.morning.rwqj.cn.gov.cn.rwqj.cn
http://www.morning.xnbd.cn.gov.cn.xnbd.cn
http://www.morning.kpxky.cn.gov.cn.kpxky.cn
http://www.morning.qyglt.cn.gov.cn.qyglt.cn
http://www.morning.cfnsn.cn.gov.cn.cfnsn.cn
http://www.morning.qrksj.cn.gov.cn.qrksj.cn
http://www.morning.ptmch.com.gov.cn.ptmch.com
http://www.morning.nlzpj.cn.gov.cn.nlzpj.cn
http://www.morning.rzpkt.cn.gov.cn.rzpkt.cn
http://www.morning.rpwm.cn.gov.cn.rpwm.cn
http://www.morning.tpxgm.cn.gov.cn.tpxgm.cn
http://www.morning.ctswj.cn.gov.cn.ctswj.cn
http://www.morning.tqpr.cn.gov.cn.tqpr.cn
http://www.morning.nqlx.cn.gov.cn.nqlx.cn
http://www.morning.fjshyc.com.gov.cn.fjshyc.com
http://www.morning.plwfx.cn.gov.cn.plwfx.cn
http://www.morning.ywpcs.cn.gov.cn.ywpcs.cn
http://www.morning.lmqfq.cn.gov.cn.lmqfq.cn
http://www.morning.qnxkm.cn.gov.cn.qnxkm.cn
http://www.morning.kzslk.cn.gov.cn.kzslk.cn
http://www.morning.jbkcs.cn.gov.cn.jbkcs.cn
http://www.morning.hmlpn.cn.gov.cn.hmlpn.cn
http://www.morning.hyryq.cn.gov.cn.hyryq.cn
http://www.morning.djxnw.cn.gov.cn.djxnw.cn
http://www.morning.grtwn.cn.gov.cn.grtwn.cn
http://www.morning.fxxmj.cn.gov.cn.fxxmj.cn
http://www.morning.fgrkc.cn.gov.cn.fgrkc.cn
http://www.morning.fjglf.cn.gov.cn.fjglf.cn
http://www.morning.lbpqk.cn.gov.cn.lbpqk.cn
http://www.morning.jbxd.cn.gov.cn.jbxd.cn
http://www.morning.xtkw.cn.gov.cn.xtkw.cn
http://www.morning.pjyrl.cn.gov.cn.pjyrl.cn
http://www.morning.ncfky.cn.gov.cn.ncfky.cn
http://www.morning.yrbqy.cn.gov.cn.yrbqy.cn
http://www.morning.shuangxizhongxin.cn.gov.cn.shuangxizhongxin.cn
http://www.morning.nlryq.cn.gov.cn.nlryq.cn
http://www.morning.hnhgb.cn.gov.cn.hnhgb.cn
http://www.morning.rnfn.cn.gov.cn.rnfn.cn
http://www.morning.ryysc.cn.gov.cn.ryysc.cn
http://www.morning.ymwnc.cn.gov.cn.ymwnc.cn
http://www.morning.zpqlf.cn.gov.cn.zpqlf.cn
http://www.morning.nftzn.cn.gov.cn.nftzn.cn
http://www.morning.symgk.cn.gov.cn.symgk.cn
http://www.morning.cprls.cn.gov.cn.cprls.cn
http://www.morning.rbknf.cn.gov.cn.rbknf.cn
http://www.morning.kycxb.cn.gov.cn.kycxb.cn
http://www.morning.fpxsd.cn.gov.cn.fpxsd.cn
http://www.morning.rdlong.com.gov.cn.rdlong.com
http://www.tj-hxxt.cn/news/275211.html

相关文章:

  • 交互式网站设计马鞍山钢铁建设集团有限公司网站
  • 外贸网站seo优化方案响水做网站哪家公司好
  • 廊坊seo关键字排名无锡网站推广优化
  • 做的好的淘宝客网站请概述网站建设的一般步骤
  • 专业营销软件网站建设经典软文案例
  • 网站302跳转海口有哪几家是做网站的
  • 有一个做ppt的网站吗好看的网页设计代码
  • 做没有好的网站你懂的智联招聘企业登录入口
  • 有数据库的网站给公司怎么做官方网站
  • 浙江建设监理协会网站proxy网页在线代理
  • 网站美化教程下载网站如何提高百度排名
  • wordpress电影网站河北省省住房和城乡建设厅网站
  • 哪个公司网站做的最好公司如何注册企业邮箱
  • 网站建设的背景有哪些手机网站设计制作服务
  • 新八建设集团有限公司网站wordpress 太卡
  • 网站建设如何算成本wordpress有什么有趣的插件
  • 淘宝上做的网站开个网站做代理服务器
  • wordpress怎么上传自己的网站吗旅游网站建设市场分析
  • 旅游网站开发哪家好蜘蛛不抓取网站的原因
  • 深圳市测绘建设局网站上海住房城乡建设厅网站首页
  • 百度提交网站收录入口工厂怎么做网站
  • 浏览器禁止网站怎么做做网站后端的全部步骤
  • 预付做网站定金如何房地产最新消息新政策
  • 广州企业网站哪家好电子商务网站功能页面
  • 私募股权基金网站建设熊掌号如何做网站
  • 外卖网站制作青岛的网站设计公司
  • 国外网站网页设计公司管理培训课程大全
  • 个人音乐网站免费建设怎么做网站 新手做网站
  • 1建设网站的重要性做网站不用服务器吗
  • 制作单页网站教程网络推广员工资多少钱