全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

IP归属甄别会员请立即修改密码
查看: 895|回复: 10
打印 上一主题 下一主题

[技术向]把Django迁移到WordPress

[复制链接]
跳转到指定楼层
1#
发表于 2023-1-2 22:34:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
discuz贴的代码没有高亮,排版也不太好看,感兴趣的可以前往我的博客看一下:
https://sharpgan.com/wordpress-to-django/
首先展示一下Django的表结构:
  1. class Category(models.Model):
  2.     category_name = models.CharField(max_length=200)

  3.     def __str__(self):
  4.         if self.category_name:
  5.             return self.category_name

  6.     class Meta:
  7.         verbose_name = "分类"
  8.         verbose_name_plural = verbose_name


  9. class Tag(models.Model):
  10.     tag_name = models.TextField(max_length=100)

  11.     def __str__(self):
  12.         if self.tag_name:
  13.             return self.tag_name

  14.     class Meta:
  15.         verbose_name = "标签"
  16.         verbose_name_plural = verbose_name


  17. class PostManager(models.Manager):
  18.     def distinct_date(self):  # 该管理器定义了一个distinct_date方法,目的是找出所有的不同日期
  19.         distinct_date_list = []  # 建立一个列表用来存放不同的日期 年-月
  20.         date_list = self.values('post_date')  # 根据文章字段date_publish找出所有文章的发布时间
  21.         for date in date_list:  # 对所有日期进行遍历,当然这里会有许多日期是重复的,目的就是找出多少种日期
  22.             date = date['post_date'].strftime('%Y年%m月')  # 取出一个日期改格式为 ‘xxx年/xxx月 存档’
  23.             if date not in distinct_date_list:
  24.                 distinct_date_list.append(date)
  25.         return distinct_date_list


  26. class Post(models.Model):
  27.     title = models.CharField(max_length=200)
  28.     slug = models.SlugField(max_length=255,unique=True)
  29.     author = models.ForeignKey(User, on_delete=models.CASCADE)
  30.     post_date = models.DateTimeField(auto_now_add=True)
  31.     comment_status = models.CharField(choices=COMMENT_STATUS_CHOICES,
  32.                                       default=('opened', 'opened'), max_length=20)
  33.     content = RichTextUploadingField(config_name='default')
  34.     tag = models.ManyToManyField('Tag', blank=True)
  35.     category = models.ForeignKey(Category, related_name='category', null=True, on_delete=models.CASCADE)
  36.     objects = PostManager()
  37.     is_wordpress = models.CharField(choices=IS_WORDPRESS, default=('yes', 'yes'), max_length=10)
  38.     price = models.FloatField(blank=True, null=True)

  39.     class Meta:
  40.         verbose_name = "文章"
  41.         verbose_name_plural = '\u200B' + verbose_name
  42.         ordering = ["-post_date"]

  43.     def __str__(self):
  44.         if self.title:
  45.             return self.title

  46.     def get_absolute_url(self):
  47.         return reverse('article_detail', args=[str(self.slug)])


  48. class Comments(MPTTModel):
  49.     post = models.ForeignKey(Post, on_delete=models.CASCADE)
  50.     user_name = models.CharField(max_length=20)
  51.     email = models.CharField(max_length=50)
  52.     comment_date = models.DateTimeField(auto_now=True)
  53.     content = models.TextField(max_length=1000)
  54.     parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='children')
  55.     approved = models.CharField(choices=COMMENT_APPROVED_CHOICES,
  56.                                 default=('refused', 'refused'), max_length=20)

  57.     def __str__(self):
  58.         if self.content:
  59.             return self.content

  60.     class Meta:
  61.         verbose_name = "评论"
  62.         verbose_name_plural = verbose_name
  63.         ordering = ["-comment_date"]


  64. class Order(models.Model):
  65.     order_id = models.CharField(max_length=25)
  66.     order_done_datetime = models.DateTimeField(auto_now_add=True)
  67.     slug = models.CharField(max_length=200)
  68.    
  69.     def __str__(self):
  70.         if self.order_id:
  71.             return self.order_id
  72.     class Meta:
  73.         verbose_name = "订单"
  74.         verbose_name_plural = verbose_name
  75.         ordering = ["-order_done_datetime"]
复制代码

然后是WordPress迁移到Django的实战代码:
[code]#!/usr/bin/env python3
# coding=utf-8

import pymysql
import sqlite3
from pymysql.connections import Connection
from pymysql.cursors import Cursor
from pymysql.connections import Connection as MyConnection


class MysqlConn():
   def db_connector(self) -> Connection:
       """
       功能:用于数据库初始化连接,获取db实例对象
       :return: db连接对象
       """
       common_db_config = {'host': '192.168.0.1',
                           'user': 'root',
                           'port': 3306,
                           'passwd': '123456root',
      
2#
 楼主| 发表于 2023-1-2 22:36:13 | 只看该作者
卧槽,第一次发表被拦截了,第二次怎么被截断了,感兴趣的去我博客看一下吧
3#
发表于 2023-1-2 22:44:17 | 只看该作者
大佬们  现在做站用什么程序 ?
4#
发表于 2023-1-2 22:44:24 | 只看该作者
广告屏蔽进不去
5#
 楼主| 发表于 2023-1-2 22:54:06 | 只看该作者
飞鱼8 发表于 2023-1-2 22:44
大佬们  现在做站用什么程序 ?

现在用的wp哈
6#
发表于 2023-1-2 22:54:38 | 只看该作者
支持技术贴
7#
发表于 2023-1-2 22:57:44 | 只看该作者
支持技术贴
8#
 楼主| 发表于 2023-1-2 23:01:06 | 只看该作者
蛋饼 发表于 2023-1-2 22:44
广告屏蔽进不去

帮忙加一下白名单再试试哈~
9#
发表于 2023-1-3 08:17:41 | 只看该作者
不都是Django迁移到WordPress   你这是WordPress 迁移到Django???
10#
 楼主| 发表于 2023-1-3 09:15:22 来自手机 | 只看该作者
暗夜精灵 发表于 2023-1-3 08:17
不都是Django迁移到WordPress   你这是WordPress 迁移到Django???

我左右两边反复横跳,哈哈
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2025-9-23 22:01 , Processed in 0.062280 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表