Django1.11搭建一個簡易上傳顯示圖片的后台


本文為作者原創,轉載請注明出處(http://www.cnblogs.com/mar-q/)by 負贔屓

項目展示需要,之前沒研究過Django,網上查資料快速做了一個后台,寫下了防止自己忘了。

1. 安裝Django:

 

pip install Django

 

2. 測試Django:

python >> import django >>django.VERSION

顯示版本為(1, 11, 5, 'final', 0),剛接觸,github也沒找到能運行起來的。

 

3. 運行一個demo

找到django-admin.py這個文件的路徑,一般pip安裝在Python的sit-packages里,如果是anaconda會在anaconda/bin目錄下

whereis django-admin.py

打開該文件所在的目錄

cd [$path of django-admin.py$]

在當前目錄內產生一個HelloWorld項目,也可以在其他目錄創建

django-admin.py startproject HelloWorld

進入HelloWorld項目內,用tree命令查看一下目錄結構,如果沒有tree這個工具建議安裝一個:apt install tree或者yum install tree

tree
.
|-- HelloWorld | |-- __init__.py | |-- settings.py | |-- urls.py | `-- wsgi.py `-- manage.py

 

4. 運行測試

進入HelloWorld項目manager負責項目運行管理,它內部的子目錄HelloWorld里面存放的是url配置及項目的setting配置,可以先在本地運行一下:

python manage.py runserver

直接訪問localhost:8000就發現成功了。如果是外網訪問,可以通過指定端口的方式,例如指定80端口:

python manage.py runserver 0.0.0.0:80

如果外網不能訪問,需要配置一下setting.py中的ALLOWED_HOSTS,修改為:

ALLOWED_HOSTS = [‘*’]

直接用域名或者公網ip訪問即可:

 

5. 創建一個uploadImg的app

在HelloWorld目錄下運行manage.py

python manage.py startapp uploadImg

把這個應用加入到setting.py的INSTALLED_APPS中

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'uploadImg',
]

可以看一下現在HelloWorld目錄結構:tree

. ├── HelloWorld1 │   ├── __init__.py │   ├── __pycache__ │   │   ├── __init__.cpython-36.pyc │   │   └── settings.cpython-36.pyc │   ├── settings.py │   ├── urls.py │   └── wsgi.py ├── loadImg │   ├── admin.py │   ├── apps.py │   ├── __init__.py │   ├── migrations │   │   └── __init__.py │   ├── models.py │   ├── tests.py │   └── views.py └── manage.py

loadImg是剛才創建的app,其中的model不言而喻,肯定是數據相關了。vim loadImg/models.py,創建IMG類

from django.db import models # Create your models here.
class IMG(models.Model): img = models.ImageField(upload_to='upload')

 

6. 更新數據庫

python manage.py makemigrations
python manage.py migrate

我是django1.11版本,所以是這兩句命令,低於1.7版本命令為python manage.py syncdb

 

7. 編輯uploadImg目錄下的views.py,創建圖片上傳和顯示函數

from django.shortcuts import render from uploadImg.models import IMG # Create your views here.
def uploadImg(request): if request.method == 'POST': new_img = IMG( img=request.FILES.get('img') ) new_img.save() return render(request, 'uploadimg.html') def showImg(request): imgs = IMG.objects.all() content = { 'imgs':imgs, } return render(request, 'showimg.html', content)

 

8. 修改HelloWorld目錄下的urls.py文件,這里相關博客提供的我沒有配通,所以自己修改了一下,1.10版本后直接import views會提示錯誤,新手小白需要注意:

from django.conf.urls import url from django.contrib import admin from uploadImg.views import uploadImg,showImg from django.conf.urls.static import static from django.conf import settings urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^upload', uploadImg), url(r'^show', showImg), ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

修改setting.py文件,添加配置上傳文件路徑:

MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\\', '/')

 

9. 在uploadImg目錄下創建templates目錄,在該目錄下分別創建uploadimg.html和showimg.html

<form method="POST" enctype="multipart/form-data"> {% csrf_token %} <input type="file" name="img">
<button type="submit">上傳</button>
</form>
{% for img in imgs %} <img src='{{ img.img.url }}' /> {% endfor %}

 

 10. 運行測試第4步進行

需要注意,如果不是root用戶沒有配置默認是沒有80端口權限的,建議使用其他端口。

 

參考:

http://www.cnblogs.com/yubenliu/p/6121536.html

http://www.runoob.com/django/django-tutorial.html 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM