[local] munakata:~/source/python/vlman$ pip3 install django [local] munakata:~/source/python/vlman$ python3 -m django --version 2.2.2
[local] munakata:~/source/python/vlman$ django-admin startproject vlmanui [local] munakata:~/source/python/vlman/vlmanui$ django-admin startapp file_viewer
[local] munakata:~/source/python/vlman/vlmanui$ python3 manage.py createsuperuser Username (leave blank to use 'munakata'): Email address: magu775@gmail.com Password: Password (again): Superuser created successfully.
LANGUAGE_CODE = 'ja' TIME_ZONE = 'Asia/Tokyo'
[local] munakata:~/source/python/vlman$ tree
.
├── video_top
│ ├── sample_A.mp4
├── vlman.py
├── vlmandb.sqbpro
├── vlmandb.sqlite3
├── file_viewer <--------- application definition
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── migrations
│ │ └── __init__.py
│ ├── models.py <----------- database access definition
│ ├── tests.py
│ └── views.py <--------- look & feel definition
└── vlmanui <------------ total system settings
├── manage.py
└── vlmanui
├── __init__.py
├── settings.py <---------- application directory
├── urls.py <------------ URL entry point definition
└── wsgi.py[local] munakata:~/source/python/vlman/vlmanui$ python3 manage.py runserver 8000
path('abc/', include('(プロジェクト名).urls', name = 'reverse serch name')
rpath(r'^abc*$', include('application name.urls'), name='reverse name')
urlpatterns += staticfiles_urlpatterns() urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) )
[local] munakata:~/source/python/vlman/vlmanui$ python3 manage.py makemigrations
Migrations for 'fview':
fview/migrations/0001_initial.py
- Create model Filedir
[local] munakata:~/source/python/vlman/vlmanui$ python3 manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, fview, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying fview.0001_initial... OK
Applying sessions.0001_initial... OK
(vman) munakata@muna-E450:~/code/python/vman/vmanhmi$ python manage.py shell Python 3.6.8 (default, Jan 14 2019, 11:02:34) [GCC 8.0.1 20180414 (experimental) [trunk revision 259383]] on linux Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole) >>> from django.core.cache import cache >>> cache.clear()
sqlite> select * from django_migrations; <------- 該当アプリの変更履歴が記録されている sqlite> delete from django_migrations where app='fview (=アプリ名)'; sqlite>.exit (vman) munakata@muna-E450:~/code/python/vman/vmanhmi$ python manage.py makemigrations (vman) munakata@muna-E450:~/code/python/vman/vmanhmi$ python manage.py migrate
(vman) munakata@muna-E450:~/code/python/vman/vmanhmi$ python manage.py makemigrations fview
(vman) munakata@muna-E450:~/code/python/vman/vmanhmi$ python manage.py migrate --fake fview zero (vman) munakata@muna-E450:~/code/python/vman/vmanhmi$ python manage.py migrate fview
munakata@muna-E450:~/code/python/vman/vmanhmi$ tree (project root) ├── fview (application root) │ (snip) │ ├── static <------ 各アプリの下に専用の css/js を配置する │ │ └── fview │ │ ├── css │ │ │ ├── bootstrap.min.css │ │ │ └── bootstrap.min.css.map │ │ └── js │ │ ├── bootstrap.bundle.min.js │ │ ├── bootstrap.bundle.min.js.map │ │ ├── jquery-3.4.1.min.js │ │ └── jquery-3.4.1.min.map
pip3 install django-bootstrap4
munakata@muna-E450:~/code/python/vman/vmanhmi$ pip install django-bootstrap4 Collecting django-bootstrap4 Downloading https://files.pythonhosted.org/packages/02/5a/485d61f6dafa4e4d001a7880b04f40f04fe485a54b2756b0536ed2052342/django-bootstrap4- 0.0.8.tar.gz Building wheels for collected packages: django-bootstrap4 Running setup.py bdist_wheel for django-bootstrap4 ... done Stored in directory: /home/munakata/.cache/pip/wheels/f6/58/7f/fcdbcc8c631cc8f775cb8b9349ded99aff7a3f5b28e0f40ef3 Successfully built django-bootstrap4 Installing collected packages: django-bootstrap4 Successfully installed django-bootstrap4-0.0.8
<a href="{% url 'fview:list_view' %}" class="btn btn-primary btn-sm my-3">ファイル一覧に戻る</a><a href={% url 'app:table' table.id %}>{{ table.name }}</a> <a scope="row" href="{% url 'fview:detail_view' fid=vfile.file_ID %}" class="btn btn-outline-primary btn-sm">{{ vfile.file_ID }}</a><form action="" method="POST">
{% csrf_token %}
<button type="submit" class="btn btn-outline-success btn-sm">お気に入りに登録</button>
</form>munakata@muna-E450:~/code/python/vmanhmi/fview/templates/fview$ pip install pillow Collecting pillow Using cached https://files.pythonhosted.org/packages/d2/c2/f84b1e57416755e967236468dcfb0fad7fd911f707185efc4ba8834a1a94/Pillow-6.0.0-cp36-cp36m-manylinux1_x86_64.whl Installing collected packages: pillow Successfully installed pillow-6.0.0
# media file for "pillow" MEDIA_ROOT = os.path.join(BASE_DIR, 'media') MEDIA_URL = '/media/'
# To support media directory path finding from . import settings from django.contrib.staticfiles.urls import static from django.contrib.staticfiles.urls import staticfiles_urlpatterns urlpatterns += staticfiles_urlpatterns() urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
class Document(models.Model):
description = models.CharField(max_length=255, blank=True)
photo = models.ImageField(upload_to='documents/', default='defo')
uploaded_at = models.DateTimeField(auto_now_add=True)
ImageField 型を宣言することが重要な意味を持つ
<div class="container">
<div class="row">
<div class="col-lg-8">
<div class="row">
<div class="col-xs-6"></div>
<div class="col-xs-6"></div>
<div class="col-xs-6"></div>
<div class="col-xs-6"></div>
</div>
</div>
<div class="col-lg-4"></div>
</div>
</div>