美文网首页
Django搭建博客(二)

Django搭建博客(二)

作者: 蓝歌鲤蓝 | 来源:发表于2018-03-01 21:39 被阅读0次

    不知道如何创建django项目和app应用的可以先看这篇文章
    https://www.jianshu.com/p/687ce04ce456

    今天刚完成的。

    说一下思路,本项目是实验项目,实现图片上传与显示功能。

    1.创建好标题,内容,图片等字段后,导入数据库。

    2.图片需通过上传图片文件,所以通过表单来实现。

    3.上传的图片会下载到/media/picture/下,/media/在settings中设置,通过urls来连接,

    picture/在下面的模型中设置。

    image

    项目名 picture ,app名 tu。

    一.构造模型

    在tu下的models.py文件中:

    from django.db import models
    # Create your models here.
    
    class Profile(models.Model):
        title = models.CharField('标题', max_length=50)
        content = models.TextField(help_text='博客内容')
        pub = models.DateField('发布时间')
        picture = models.ImageField(upload_to='picture/')
    
        class Meta:
            verbose_name = '博客'
            verbose_name_plural = verbose_name
            ordering = ['-pub']
    
        def __str__(self):
            return self.title</pre>
    

    记得在picture下的setting.py将app应用添加上去。

    二.注册数据

    在admin.py下注册

    from django.contrib import admin
    from .models import Profile
    # Register your models here.
    
    class ProfileAdimin(admin.ModelAdmin):
        list_display = ('title', 'pub', 'picture')
    
    admin.site.register(Profile, ProfileAdimin)</pre>
    

    然后在命令行输入

    python manage.py makemigrations blog  
    
    python manage.py migrate 
    

    绑定完成后在命令行输入

    python manage.py runserver  
    

    然后打开:http://127.0.0.1:8000/admin/就可以看到创建好的博客项目了。

    三.设计视图

    在views.py下:
    创建了图片表单,因为需要上传文件

    from django.shortcuts import render
    from django import forms
    from .models import Profile
    # Create your views here.
    
    class ProfileForm(forms.Form):
        picture = forms.ImageField()
    
    def saveProfile(request):
        if request.method == 'GET':
            blog_list = Profile.objects.all()
            return render(request, 'learn.html', {'blog_list': blog_list})
        elif request.method == 'POST':
            MyProfileForm = ProfileForm(request.POST, request.FILES)
    
            if MyProfileForm.is_valid():
                profile = Profile()
                profile.picture = MyProfileForm.cleaned_data['picture']
                profile.save()
                blog_list = Profile.objects.all()
                return render(request, 'learn.html', {'blog_list': blog_list})
    
        else:
            return render(request, 'learn.html')</pre>
    

    四.创建模板

    模板我就不说了,这个项目主要是说明如何构建图片上传的views视图,我的模板是在别处找的,

    还有一些静态文件,等我完善后会将完整代码上传到github上。

    五.设置路径

    在settings.py中新添加

    MEDIA_URL = '/media/'
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media')</pre>
    

    这个就是上面说的图片存放的文件了。

    六.绑定url

    这里需要导入views文件还有static文件与settings配置文件。

    from django.conf.urls import url
    from django.contrib import admin
    from django.conf.urls.static import static
    from django.conf import settings
    from tu import views
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^myblog//pre>, views.saveProfile, name="upload"),
    ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    

    七.结果

    image image

    相关文章

      网友评论

          本文标题:Django搭建博客(二)

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