Django+Eclipse创建博客

一、配置开发环境:

环境:python2.7.16 + Django1.11.23 + Eclipse 2019-06 (4.12.0)

  1. 安装Python:安装完成后需在环境变量-系统变量的PATH变量添加Python安装路径到变量值;
  2. 安装Django:在DOS中进入解压后目录,运行全集:setup.py install;
  3. 安装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.htmlhttps://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)

posted @ 2021-08-28 23:38  泰蒂斯  阅读(33)  评论(0)    收藏  举报