Django上传图片和显示图片

1.首先写好models.py

class UserInfo(models.Model):
    username = models.CharField(max_length=20, unique=True, null=False)
    password = models.CharField(max_length=20)
    image = models.ImageField(upload_to='/home/python/Desktop/new_pro/static')
    phone = models.IntegerField()
    email = models.CharField(max_length=20)
    is_active = models.BooleanField(default=False)
    is_delete = models.BooleanField(default=False)
    def __str__(self):
        return self.username

2.首先写好上传图片的html:

<form method="post" action="{% url 'user2:register' %}" enctype="multipart/form-data">
                    {% csrf_token %}
                <ul>
                    <li>
                        <label>用户名:</label>
                        <input type="text" name="user_name" id="user_name">
                        <span class="error_tip">提示信息</span>
                    </li>                    
                    <li>
                        <label>密码:</label>
                        <input type="password" name="pwd" id="pwd">
                        <span class="error_tip">提示信息</span>
                    </li>
                    <li>
                        <label>确认密码:</label>
                        <input type="password" name="cpwd" id="cpwd">
                        <span class="error_tip">提示信息</span>
                    </li>
                    <li>
                        <label>手机:</label>
                        <input type="text" name="phone" id="phone">
                        <span class="error_tip">提示信息</span>
                    </li>
                    <li>
                        <label>邮箱:</label>
                        <input type="text" name="email" id="email">
                        <span class="error_tip">提示信息</span>
                    </li>
                    <li>
                        <label>头像:</label>
                        <input type="file" name="image" id="image">
                        <span class="error_tip">提示信息</span>
                    </li>
                    <li class="agreement">
                        <input type="checkbox" name="allow" id="allow" checked="checked">
                        <label>同意”天天生鲜用户使用协议“</label>
                        <span class="error_tip2">提示信息</span>
                    </li>
                    <li class="reg_sub">
                        <input type="submit" value="注 册" name="">
                    </li>
                    <span>{{ info }}</span>
                </ul>                
                </form>

3.在项目的根urls.py配置:

 url(r"^register/",include('register.urls',namespace='user2')),
 url(r'static/(?P<path>.*)', 'django.views.static.serve', {'document_root': '/home/python/Desktop/new_pro/static'}),

4.在自己的app中urls.py配置:

 url(r'^$',views.RegisterHandler.as_view(),name='register'),
 url(r"^showimage",views.showimage)

5.在views.py配置:

from django.shortcuts import render,HttpResponse,redirect
from django.views.generic import View
from user.models import  UserInfo

# Create your views here.
class RegisterHandler(View):
    def get(self,request):
        return render(request,'register.html')
    def post(self,request):
        username=request.POST.get('user_name')
        pwd=request.POST.get('pwd')
        phone=request.POST.get('phone')
        email=request.POST.get('email')
        image=request.FILES.get('image')
        allow=request.POST.get('allow')
        if allow=='on':
            user=UserInfo.objects.create(username=username,password=pwd,phone=phone,email=email,image=image)
            # user.save()
        return redirect('/register/showimage')
def showimage(request):
    userlist=UserInfo.objects.all()
    return render(request,'registershow.html',{'userlist':userlist})

6.写展示图片的html:

 <style type="text/css">
        img{
            width: 180px;
            height:180px;
            display: inline-block;
            border-radius: 50%;
            border: 1px solid red;
        }
        table{
            {#border: 1px solid red;#}
        }
        ul{
            list-style: none;
        }
        ul li{
            height: 20px;
            line-height: 20px;
            {#border-bottom: 1px solid black;#}
            margin-top: 10px;
            font-size:20px;
        }
        span{
            float: left;
        }
    </style>
</head>
<body>
      {% for user in userlist %}
      <table>
      <tr>
          <td><img src="{{ user.image }}"></td>
          <td>
              <ul>
                  <li><span>姓名:</span>{{ user.username }}</li>
                  <li><span>邮箱:</span>{{ user.email }}</li>
                  <li><span>电话:</span>{{ user.phone }}</li>
              </ul>
          </td>
      </tr>
      </table>
    {% endfor %}

</body>

7.最终显示图片页面效果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_36455530/article/details/84994126
今日推荐