DjangoGirls Blog开发流程

DjangoGirls Blog开发流程


1.安装Python,pip,virtualenv,Django
2.启动virtualenv
3.django-admin startproject mysite .
4.修改mysite/setting.
修改time_zone = 'Asia/Shanghai'
修改static_url = '/static'
数据库设置默认sqlite3

5.生成数据库:python manage.py migrate
6.启动Django:python manage.py runserver 0.0.0.0:8000
7.生成应用blog: python manage.py startapp blog
8.修改mysite/settings.py,INSTALLED_APPS添加blog.

  INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
  )

9.修改blog/models.py,添加blog的模型

  from django.db import models
  from django.utils import timezone


  class Post(models.Model):
    author = models.ForeignKey('auth.User')
    title = models.CharField(max_length=200)
    text = models.TextField()
    created_date = models.DateTimeField(
            default=timezone.now)
    published_date = models.DateTimeField(
            blank=True, null=True)

    def publish(self):
        self.published_date = timezone.now()
        self.save()

    def __str__(self):
        return self.title

在数据库中为模型创建数据表:python manage.py makemigrations blog
迁移文件:python manage.py migrate blog
10.修改blog/admin.py

   from django.contrib import admin
   from .models import Post

   admin.site.register(Post)

创建超级管理员

   (myvenv) ~/djangogirls$ python manage.py createsuperuser
   Username: admin
   Email address: [email protected]
   Password:
   Password (again):
   Superuser created successfully.

登录http://localhost:8000/admin/
在Posts一栏,点击Add,添加几篇文章

11.修改mysite/urls.py

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
        url(r'^admin/', include(admin.site.urls)),
        url(r'', include('blog.urls')),
]

12.添加blog/urls.py

from django.conf.urls import url
from . import views
urlpatterns = [
        url(r'^$', views.post_list, name='post_list'),
]

13.创建blog/templates/blog目录.创建post_list.html文件
修改blog/views.py

    from django.shortcuts import render
    from django.utils import timezone
    from .models import Post

    def post_list(request):
       posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
       return render(request, 'blog/post_list.html', {'posts': posts})

14.创建base.html


{% load staticfiles %}

    
    Django Girls blog
    
    
    
    
    
    
        
        
{% block content %} {% endblock %}

创建post_list.html

{% extends 'blog/base.html' %}

    {% block content %}
        {% for post in posts %}
            
{{ post.published_date }}

{{ post.title }}

{{ post.text|linebreaks }}

{% endfor %} {% endblock content %}

15.创建文章详细页面
修改blog/urls.py

    from django.conf.urls import include, url
    from . import views

    urlpatterns = [
       url(r'^$', views.post_list, name='post_list'),
       url(r'^post/(?P[0-9]+)/$', views.post_detail, name='post_detail'),
    ]


修改blog/view.py

    def post_detail(request, pk):
        post = get_object_or_404(Post, pk=pk)
        return render(request, 'blog/post_detail.html', {'post': post})

添加blog/templates/blog/post_detail.html

{% extends 'blog/base.html' %}

    {% block content %}
        
{% if post.published_date %}
{{ post.published_date }}
{% endif %}

{{ post.title }}

{{ post.text|linebreaks }}

{% endblock %}

16.添加新页面
创建blog/form.py

from django import forms

from .models import Post

class PostForm(forms.ModelForm):

    class Meta:
        model = Post
        fields = ('title', 'text',)

修改blog/templates/blog/base.html

{% load staticfiles %}
    
        
            Django Girls blog
            
            
            
            
        
        
            
            
{% block content %} {% endblock %}

修改blog/urls.py

from django.conf.urls import include, url
from . import views

urlpatterns = [
    url(r'^$', views.post_list, name='post_list'),
    url(r'^post/(?P[0-9]+)/$', views.post_detail, name='post_detail'),
    url(r'^post/new/$', views.post_new, name='post_new'),
]

修改blog/views.py,添加

from .forms import PostForm
from django.shortcuts import redirect
def post_new(request):
    if request.method == "POST":
        form = PostForm(request.POST)
        if form.is_valid():
            post = form.save(commit=False)
            post.author = request.user
            post.published_date = timezone.now()
            post.save()
            return redirect('blog.views.post_detail', pk=post.pk)
    else:
        form = PostForm()
    return render(request, 'blog/post_edit.html', {'form': form})

添加blog/templates/post_edit.html

{% extends 'blog/base.html' %}

    {% block content %}
        

New post

{% csrf_token %} {{ form.as_p }}
{% endblock %}

17.编辑博客内容
修改blog/templates/blog/post_detail.html

{% extends 'blog/base.html' %}

    {% block content %}
        
{% if post.published_date %}
{{ post.published_date }}
{% endif %}

{{ post.title }}

{{ post.text|linebreaks }}

{% endblock %}

在blog/urls.py中添加

 url(r'^post/(?P[0-9]+)/edit/$', views.post_edit, name='post_edit'),

在blog/views.py中添加

def post_edit(request, pk):
    post = get_object_or_404(Post, pk=pk)
    if request.method == "POST":
        form = PostForm(request.POST, instance=post)
        if form.is_valid():
            post = form.save(commit=False)
            post.author = request.user
            post.published_date = timezone.now()
            post.save()
            return redirect('blog.views.post_detail', pk=post.pk)
    else:
        form = PostForm(instance=post)
    return render(request, 'blog/post_edit.html', {'form': form})

||>>END<<||

你可能感兴趣的:(DjangoGirls Blog开发流程)