Home >  > django wordpress网站

django wordpress网站

一、安装
(一)创建虚拟环境

virtualenv png08_venv

(二)修改安装参数

将requirements.txt中的Pillow==4.2.1这一行直接改成Pillow,不然安装会报错。

(三)安装

pip install -r requirements.txt

(四)在phpmyadmin新建一个数据库,而且要选择"utf-8 general-ci"

不然会报错:

H:\py_project\png_07\png_07_venv\lib\site-packages\pymysql\cursors.py:166: Warni
ng: (1366, "Incorrect string value: '\\xE7\\x94\\xA8\\xE6\\x88\\xB7' for column
'name' at row 1")
result = self._query(query)
H:\py_project\png_07\png_07_venv\lib\site-packages\pymysql\cursors.py:166: Warni
ng: (1366, "Incorrect string value: '\\xE7\\x94\\xA8\\xE6\\x88\\xB7' for column
'name' at row 2")
result = self._query(query)
H:\py_project\png_07\png_07_venv\lib\site-packages\pymysql\cursors.py:166: Warni
ng: (1366, "Incorrect string value: '\\xE7\\x94\\xA8\\xE6\\x88\\xB7' for column
'name' at row 3")
result = self._query(query)
H:\py_project\png_07\png_07_venv\lib\site-packages\pymysql\cursors.py:166: Warni
ng: (1366, "Incorrect string value: '\\xE6\\x96\\x87\\xE7\\xAB\\xA0' for column
'name' at row 1")

(五)修改数据库配置

首先修改django中的數據庫配置信息,修改settings.py配置信息中的TEST

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        'HOST':'127.0.0.1',
        'PORT':'3306',
        'NAME':'guest',
        'USER':'root',
        'PASSWORD':'111111',
    }
}

https://www.itdaan.com/tw/37ecff60a10fd50d6ac696a9bbace1e4

(六)修改django文件
这时执行migrate,会报错:

SyntaxError: Generator expression must be parenthesized, '%s=%s' % (k, v) for k, v in params.it

需要修改下面这个文件:
File "H:\py_project\png_08\png08_venv\lib\site-packages\django\contrib\admin\w
idgets.py", line 152

修改源代码,去掉那个逗号。

(七)安装mysql

pip install pymysql

django项目__inti__.py中添加以下代码

import pymysql
pymysql.install_as_MySQLdb()

(八)生成数据库

python manage.py makemigrations
python manage.py migrate

(九)生成后台账号,并运行程序员

python manage.py createsuperuser

python manage.py runserver

效果预览:

十、后台
地址:http://127.0.0.1:8000/adminx/login/?next=/adminx/

十一、view and class
ListView用来展示一个对象的列表。它只需要一个参数模型名称即可。比如我们希望展示所有文章列表,我们的views.py可以简化为:


from django.views.generic import ListView
from .models import Article

class IndexView(ListView):

    model = Article


上述代码等同于:

# 展示所有文章
def index(request):
    queryset = Article.objects.all()
    return render(request, 'blog/article_list.html', {"article_list": queryset})


十二、slug的处理
直接用正则

import re

result = re.findall(r'\w+', "that's $ very_good_#1")
print('-'.join(result))    # 78za8892HKa2

输出结果是:that-s-very_good_-1

后来发现python有一个的slugify的包。

pip安装,结果用不了,后来到https://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml 这里安装就可以用了。

from slugify import slugify

txt = "that's $ very_good_#1"
r = slugify(txt)

print(r)

备注:合适下面的命令来安装

pip install python-slugify

但是输出结果是:that-s-very-good-1,还是有点不满意,不过基本上可以用了。
参考:http://www.voidcn.com/article/p-zybtvlyf-bmd.html

十三、写入数据库

import html

import pymysql
con = pymysql.connect(host='localhost', user='root', password='', database='png_09', charset='utf8')
cursor = con.cursor()


import traceback

title ="大二男生从上海坐公交到北京05"
summary ="近日,上海高校大二学生唐同学从上海坐公交到北京05"
body = "5月13日,“大二男生从上海坐公交到北京”的词条登上热搜。故事的主角,是来自华东理工大学的大二男生唐同学。他从4月29日起坐公交从上海奉贤出发,5月4日抵达了北京路庄,几乎全程坐着公交车完成了这趟1810公里的旅行。5月9日,唐同学在B站发布了一条近16分钟的视频,将自己从出发到结束的所有行程完整展现。第几天,几点到几点,哪一路公交,乘坐多少站,一班多少公里,总里程多少,均进行了详实的记录。视频截图 "
img_link = "/static/blog/img/summary.png"
views = "110"
slug = "post-p3-test5"
author_id = "1"
category_id = "1"
image_download = "https://www.xxx.com/ourpic/u2q8q8w7t4i1o0e6_black-book-clipart-libros-vector-blanco-y-negro/"
image_type = "png"
license_no = "personal_use"
resolution = "1200x1200"
size = "77kb"
# update_date = 


def insert_db(title,summary,body,img_link,views,slug,author_id,category_id,image_download,image_type,license_no,resolution,size):
    sql ="INSERT INTO blog_article(title,summary,body,img_link,views,slug,author_id,category_id,image_download,image_type,license_no,resolution,size) VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')"%(title,summary,body,img_link,views,slug,author_id,category_id,image_download,image_type,license_no,resolution,size) #最前面的引号要变成双引号,ignore表示忽略重复数据,不过先要设定索引
    try:
        cursor.execute(sql)
        tag_id = cursor.lastrowid
        con.commit()
        print('tag写入数据库成功!ID为{}'.format(tag_id))
    except:
        con.rollback()
        traceback.print_exc()
        print('文章写入数据库失败!')
        tag_id = 0

    return tag_id

insert_db(title,summary,body,img_link,views,slug,author_id,category_id,image_download,image_type,license_no,resolution,size)

参考:https://github.com/Hopetree/izone/wiki/v1-1.0

十四、关于分页

分页的设置除了在views那里,还有settings.py里面也有:

# 统一分页设置
BASE_PAGE_BY = 10
BASE_ORPHANS = 5  #在最后一页中充许的最少条目数量,默认是0.当最后一页条目数量小于或等于orphans时,这些条目加到本页的上一页中。

参考:https://blog.csdn.net/qq_43381887/article/details/104221227

标签的分页:
要将

<a class="item" href="/?page={{ page_obj.previous_page_number }}">Pre</a>

前面的斜线去掉。

十四、首页
首页的列表内容显示是在blog/tags/article_list.html里面控制的。

十五、搜索

(一)搜索页面的模板
位于izone-1-1.0\templates\search下面的serch.html

(二)与HAYSTACK有关的配置
izone-1-1.0\apps\blog\search_index.py文件。
备注:search_indexes名字不能改

# -*- coding: utf-8 -*-

from haystack import indexes
from .models import Article


class ArticleIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    views = indexes.IntegerField(model_attr='views')

    def get_model(self):
        return Article

    def index_queryset(self, using=None):
        return self.get_model().objects.all()

参考:https://www.cnblogs.com/chichung/p/10017539.html

(三)搜索结果不准确
最开始搜索结果根本不准确,后来执行了一次下面的命令之后,搜索结果才变准确了。

python manage.py rebuild_index

参考:https://blog.csdn.net/qq_37748146/article/details/90723891?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control

十六、静态文件
网站部署到服务器上之后,静态文件老是无法加载,折腾了一个星期,最后自己终于搞定了。
原来要在settings.py中将debug设置为True。

本文暂无标签