zoukankan      html  css  js  c++  java
  • django开发简易博客(一)

      这几篇博客是根据GoodSpeed的博客该写的,看了他的博客收获很大,但是他的博客从第三篇开始,条理很不清晰,加之又是几年之前写的,编写环境发生很大改变,所以对他的博客进行了一个整理,加入了一些自己的东西。

      我使用的是windows 7开发环境。

      配置如下:

      1.python 2.7.2

      2.django 1.7.8

      3. mysql 5.5

      一.新建project
    django-admin startproject web 
    

      生成目录如下:

    web/
        manage.py
        web/
            __init__.py
            urls.py
            settings.py
            wsgi.py
    

      运行服务器:

    python manage.py runserver
    System check identified no issues (0 silenced).
    August 08, 2015 - 14:15:04
    Django version 1.7.8, using settings 'web.settings'
    Starting development server at http://127.0.0.1:8000/
    Quit the server with CTRL-BREAK.

      如果出现以上输出说明运行服务器成功

      二.新建app

      在项目中打开cmd输入

    python manage.py startapp blog
    

      执行这条命令之后,在web项目下将生成一个blog文件文件夹,目录如下:

    blog/
        __init__.py
        admin.py
        models.py
        test.py
        views.py
        migrations/
            __init__.py
    
      三.配置数据库

      打开settings.py文件,这里我们使用mysql,配置如下

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'blog',
    		'USER':'root',
    		'PASSWORD':'root',
    		'HOST':'',
    		'PORT':3306,
        }
    }
    

      检查配置是否成功,在项目中打开python交互解释器,输入

    >>>from django.db import connection
    >>>cursor = connection.cursor()
    

      如果成功运行,说明配置正确,如果不成功,请重新检查

      四.配置models

      打开models.py文件

    from django.db import models
    
    # Create your models here.
    
    class Tag(models.Model):
        tag_name = models.CharField(max_length = 20,blank=True)
        create_time = models.DateTimeField(auto_now_add = True)
        
        def __unicode__(self):
            return u'%s' %(self.tag_name)
    
    class Author(models.Model):
        name = models.CharField(max_length = 30)
        email = models.EmailField(blank = True)
        website = models.URLField(blank =True)
    
        def __unicode__(self):
            return u'%s' %(self.name)
    
    class Blog(models.Model):
        caption =  models.CharField(max_length = 50)
        author = models.ForeignKey(Author)
        tags = models.ManyToManyField(Tag,blank = True)
        content = models.TextField()
        publish_time = models.DateTimeField(auto_now_add = True)
        update_time = models.DateTimeField(auto_now_add = True)
    
        def __unicode__(self):
            return u"%s %s %s " % (self.caption,self.author,self.publish_time)   

      检查模型的正确性,在cmd中输入

    python manage.py validate
    

      如果配置正确,输出将如下所示

    F:web>python  manage.py validate
    System check identified no issues (0 silenced).
    

      如果出现问题,django会指出问题出在哪

      同步数据库,执行以下命令:

    python manage.py makemigrations
    python manage.py migrate
    python manage.py syncdb

      这时django将在数据库blog中建立模型类中定义的数据表,在执行syncdb的时候,django会提示建立后台管理用户

      运行服务器,打开127.0.0.1:8000/admin/

      就可以使用后台管理了,但是这时,新建的blog并没没有出现,怎样才能让admin能管理blog了,需要配置admin.py文件。

    from django.contrib import admin
    from blog.models import Author, Blog, Tag
    
    # Register your models here.
    class AuthorAdmin(admin.ModelAdmin):
    	list_display = ('name','email','website')
    	search_fields = ('name',)
    
    class BlogAdmin(admin.ModelAdmin):
    	list_display = ('caption','id','author', 'publish_time')
    	list_filter = ('publish_time',)
    
    admin.site.register(Author, AuthorAdmin)
    admin.site.register(Blog, BlogAdmin)
    admin.site.register(Tag)
    

      这样,就可以使用admin管理blog了。完整界面如下:

  • 相关阅读:
    Chunky Monkey(算法)
    Confirm the Ending(算法)
    Return Largest Numbers in Arrays(算法)
    防止SQL注入总结
    mybatis中的#和$的区别 以及 防止sql注入
    拆分字符串为树形结构
    虚拟机类加载机制
    linux加载字体
    项目上线暴露出的问题
    浅析正则表达式-应用篇
  • 原文地址:https://www.cnblogs.com/fireflow/p/4713164.html
Copyright © 2011-2022 走看看