美文网首页
Django学习

Django学习

作者: leonaxiong | 来源:发表于2017-05-02 11:31 被阅读0次

    Djaogo是一种python web框架,非常详细的django博客开发教程

    • Django如何在后台管理数据?
      1.创建超级用户manage.py
      2.创建数据库模型models.py
      3.注册创建的的数据库模型blog/admin.py
      4.美化admin后台blog/admin.py

    • Django如何处理http请求?
      1.把不同的网址对应的处理函数写在一个 blog/urls.py文件里
      2.当用户访问某个网址时,在blog/urls.py里找该网址
      3.调用和它绑定在一起的视图函数blog/views.py
      4.blog/views.py接受 request 参数, request 是 django 封装好的 http 请求
      5.blog/views.py返回http 响应,从数据库中提取的字符串,即模板变量
      6.返回的响应需要前端渲染,blogproject/settings.py设置渲染模板路径
      8.处理 css 与 js文件,添加{% static ' '%}路径
      9.前端文件循环得到的模板变量 {% for %}{% empty %}{% endfor %}

    • manage.py管理项目的脚本文件
      1.启动服务器127.0.0.1:8000
      runserver
      2.创建新的应用
      startapp blog
      startapp comments
      3.迁移数据库模型
      makemigrations
      migrate
      4.进入命令行
      shell
      5.创建用户
      createsuperuser

    • blogproject /

      • init.py 指明这是一个python模块包
      • wsgi.py
      • settings.py配置文件
        LANGUAGE_CODE:ZH-HANS
        TIME_ZONE:Asia/Shanghai
        INSTALLED_APPS:blog,comments
        TEMPLATES ['DIRS':os.path.join(BASE_DIR, 'templates']
      • urls.py包含新建立的urls.py
    from django.conf.urls import url,include
    from django.contrib import admin
    urlpatterns = [
            url(r'^admin/', admin.site.urls),
            url(r'',include('blog.urls')),
            url(r'',include('comments.urls')),
    ]
    
    • blog/
      • init.py
      • admin.py
    from django.contrib import admin
    from .models import Post, Category, Tag
    class PostAdmin(admin.ModelAdmin):
              list_display = ['title', 'created_time', 'modified_time', 'category', 'author']
    # 把新增的 PostAdmin 也注册进来
    admin.site.register(Post)
    admin.site.register(Category)
    admin.site.register(Tag)
    
    • apps.py
    • migrations/
    • tests.py
    • views.py设置将要传入的参数
    from django.shortcuts import render
    from .models import Post
    def index(request):
            post_list = Post.objects.all()
            #取出objects里所有object
            return render(request, 'blog/index.html', context={'post_list': post_list})
    
    • models.py 编写博客的数据库模型
    from django.db import models
    from django.contrib.auth.models import User
    from django.utils.six import python_2_unicode_compatible
    #python_2_unicode_compatible装饰器运用于兼容python2
    from django.urls import reverse
    @python_2_unicode_compatible
    class Category(models.Model):
            #django 要求我们必须继承 models.Model 类
            name = models.CharField(max_length=100)
            #CharField 指定了 name 的数据类型
            #CharField 是字符型
            #max_length 指定其最大长度
            def __str__(self):      
                   return self.name
    @python_2_unicode_compatible
    class Tag(models.Model):
            name = models.CharField(max_length=100)
            def __str__(self):
                #使返回的内容可读
                return self.name
    @python_2_unicode_compatible
    class Post(models.Model):
            title = models.CharField(max_length=70)
            body = models.TextField()
            # 文章正文,我们使用了 TextField。
            # 比较短的字符串存储可以使用 CharField,
            # 但对于文章的正文来说可能会是一大段文本,
            # 因此使用 TextField 来存储大段文本。
            created_time = models.DateTimeField()
            modified_time = models.DateTimeField()
            #日期时间类型 DateTimeField
            excerpt = models.CharField(max_length=200,blank=True)
            category = models.ForeignKey(Category)
            #一对多关系ForeignKey
            tags = models.ManyToManyField(Tag,blank=True)
            #多对多关系ManyToManyField
            author =models.ForeignKey(User)
            # 这里 User 是从 django.contrib.auth.models 导入的。
            # django.contrib.auth 是 django 内置的应用,
            # 专门用于处理网站用户的注册、登录等流程,
            # User 是 django 为我们已经写好的用户模型
            def __str__(self):
                return self.title
            #为了方便生成上述url
            def get_absolute_url(self):
                return reverse('blog:detail',kwargs={'pk':self.pk})
        class Meta:
            ordering = ['-created_time']
            #让文章列表按逆序排列,最新发布的文章排在前面
    
    • 创建urls.py
    from django.conf.urls import url
    from . import views
    #绑定视图函数
    app_name = 'blog'
    urlpatterns = [
              url(r'^$',views.index,name='index'),
              #匹配空字符串
              url(r'^post/(?P<pk>[0-9]+)/$',views.detail,name='detail'),
              url(r'^archives/(?P<year>[0-9]{4})/(?P<month>[0-9]{1,2})/$',views.archives, name='archives'),
              url(r'^category/(?P<pk>[0-9]+)/$',views.category,name='category'),
    ]
    
    • 创建index.html
    用模板变量{{ }}传值
    模板标签{% %}引入static目录下的css js文件
    safe过滤器,浏览器渲染markdown
    
    • 创建static/blog文件目录
    css /
                    freendly.css代码高亮
    js /
    
    • comments/
      • models.py
      • forms.py
      • views.py
      • urls.py绑定url

    相关文章

      网友评论

          本文标题:Django学习

          本文链接:https://www.haomeiwen.com/subject/njcctxtx.html