Django+Eclipse创建博客
一、配置开发环境:
环境:python2.7.16 + Django1.11.23 + Eclipse 2019-06 (4.12.0)
- 安装Python:安装完成后需在环境变量-系统变量的PATH变量添加Python安装路径到变量值;
- 安装Django:在DOS中进入解压后目录,运行全集:setup.py install;
- 安装Eclipse的Python插件PyDev:Help->Eclipse Marketplace,输入PyDev搜索后点install;

备注:因后续需创建html文件,可同时安装HTML Editor插件;
安装之后需给PyDev配置Python解释器:Window->Preferences,找到后可直接在Quick Auto-Config中快速识别添加;

二、Python+Django在Eclipse开发自己博客
1.新建Django项目:



2.创建网站模块app

3.测试新建模块是否正常
Performing system checks...
System check identified no issues (0 silenced).
You have 15 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions, sites.
Run 'python manage.py migrate' to apply them.
August 12, 2019 - 10:00:21
Django version 1.11.23, using settings 'MySite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
Performing system checks...
启动后去浏览器输入http://127.0.0.1:8000/admin,之后会创建Mysite文件及一些其它文件
4.编辑代码
1) 修改MyBlog下models.py文件
# -*- coding: utf-8 -*-
from django.db import models
from django.contrib import admin
# Create your models here.
class BlogPost(models.Model):
title = models.CharField(max_length = 150)
content = models.TextField()
timestamp = models.DateTimeField()
class BlogPostAdmin(admin.ModelAdmin):
list_display = ('title', 'content', 'timestamp')
admin.site.register(BlogPost, BlogPostAdmin)
2) 修改MyBlog下views.py文件
# -*- coding: utf-8 -*-
# Create your views here.
from django.template import loader,Context
from django.http import HttpResponse
from MyBlog.models import BlogPost
def archive(request):
posts = BlogPost.objects.all()
t = loader.get_template('archive.html')
#c = Context({'posts': posts})
html = t.render({'posts': posts})
#return HttpResponse(t.render(c))
return HttpResponse(html)
3) 修改MySite下settings.py中相关内容
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
#'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'MyBlog',
)
4) 修改MySite下urls.py
from django.conf.urls import url
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
#from django.contrib import BlogPost, Context, HttpResponse, Loader
from MyBlog.views import *
from MyBlog.models import *
urlpatterns = [
# Uncomment the next line to enable the admin:
url(r'^admin/', admin.site.urls),
url(r'^MyBlog/$', archive)
]
5) 建立样式网页模板
在MyBlog下添加templates文件夹,并在下面建立那个网页文件archive.html、base.html
A. 编辑archive.html
{% extends "base.html" %}
{% block content %}
{% for post in posts %}
<h1>{{ post.title}}</h1>
<p>{{ post.content }}</p>
<p>{{ post.timestamp|date:"1, F jS"}}</p>
{% endfor %}
{% endblock %}
B. 编辑base.html
<html>
<style type="text/css">
body { color: #edf; background: #453; padding: 0 5em; margin:0 }
h1 { padding: 2em lem; background:#675 }
h2 { color: #bf8; border-top: 1px dotted #fff; margin-top: 2em }
p { margin: lem 0 }
</style>
<body>
<h1><center>Welcome come to Ryan's Blog</center></h1>
{% block content %}
{% endblock %}
</body>
</html>
6)同步数据库

设置账号密码:在DOS环境进入项目src所在目录,运行python manage.py createsuperuser,输入账号,邮箱,密码;
7) 运行测试


在MYBLOG输入内容保存即可发布,输入网址:http://127.0.0.1:8000/MyBlog测试成功!

引用:
https://www.cnblogs.com/lanxuezaipiao/p/3283932.html主要参考文档;
报错及故障解决:
1、NameError: name 'patterns' is not defined
引用:https://blog.csdn.net/xudailong_blog/article/details/78313568,
原因及解决方法:Django1.10后patterns已移除,删除urls.py文件中include包并导入MyBlog.views包;
前:
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^MyBlog/$', archive),
)
后:
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^MyBlog/$', archive)
]
2、DoesNotExist: Site matching query does not exist.
引用:http://blog.sina.com.cn/s/blog_4e1354b101017tcs.html、https://stackoverflow.com/questions/6086852/how-to-fix-the-django-sites-table
原因及解决方法:不需要sites框架,去掉settings.py文件中INSTALLED_APPS中django.contrib.sites内容:
前:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'MyBlog',
)
后:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
#'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'MyBlog',
)
3、OperationalError: no such table: MyBlog_blogpost
引用:https://blog.csdn.net/Xiao13Yu14/article/details/47989885
原因及解决方法:

4、TypeError: context must be a dict rather than Context.
引用:https://blog.csdn.net/u014770372/article/details/76038248
原因及解决方法:修改views.py文件,render方法传入context参数做为了make_context()方法中,context()必须是一个字典类型,mak_context()返回Context或子类RequestContext实例对象;
前:
from django.template import loader,Context
from django.http import HttpResponse
from MyBlog.models import BlogPost
def archive(request):
posts = BlogPost.objects.all()
t = loader.get_template('archive.html')
c = Context({'posts': posts})
return HttpResponse(t.render(c))
后:
from django.template import loader,Context
from django.http import HttpResponse
from MyBlog.models import BlogPost
def archive(request):
posts = BlogPost.objects.all()
t = loader.get_template('archive.html')
c = t.render({'posts': posts})
return HttpResponse(c)

浙公网安备 33010602011771号