#3 Setting up Views for Uploading and listing images
This commit is contained in:
		| @@ -14,8 +14,9 @@ Including another URLconf | |||||||
|     2. Add a URL to urlpatterns:  path('blog/', include('blog.urls')) |     2. Add a URL to urlpatterns:  path('blog/', include('blog.urls')) | ||||||
| """ | """ | ||||||
| from django.contrib import admin | from django.contrib import admin | ||||||
| from django.urls import path | from django.urls import path, include | ||||||
|  |  | ||||||
| urlpatterns = [ | urlpatterns = [ | ||||||
|     path('admin/', admin.site.urls), |     path('admin/', admin.site.urls), | ||||||
|  |     path('', include('web_galleries.urls')) | ||||||
| ] | ] | ||||||
|   | |||||||
							
								
								
									
										46
									
								
								django_web_galleries/web_galleries/templates/global.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								django_web_galleries/web_galleries/templates/global.html
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,46 @@ | |||||||
|  | <!DOCTYPE html> | ||||||
|  | <html lang="en"> | ||||||
|  | <head> | ||||||
|  |     <meta charset="UTF-8"> | ||||||
|  |     <meta http-equiv="X-UA-Compatible" content="IE=edge"> | ||||||
|  |     <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||||||
|  |     <title>Web Gallery</title> | ||||||
|  | </head> | ||||||
|  | <body> | ||||||
|  |     <div class="RV-Page"> | ||||||
|  |         <head class="RV-Head"> | ||||||
|  |             <nav class="RV-Navigation"> | ||||||
|  |                 <ul class="RV-Navigation__list"> | ||||||
|  |                     <li class="RV-Navigation__item"> | ||||||
|  |                         <a href="{% url 'home' %}" class="RV-Navigation__link"> | ||||||
|  |                             Home | ||||||
|  |                         </a> | ||||||
|  |                     </li> | ||||||
|  |                     <li class="RV-Navigation__item"> | ||||||
|  |                         <a href="{% url 'upload_image' %}" class="RV-Navigation__link"> | ||||||
|  |                             Upload image | ||||||
|  |                         </a> | ||||||
|  |                     </li> | ||||||
|  |                     <li class="RV-Navigation__item"> | ||||||
|  |                         <a href="#" class="RV-Navigation__link"> | ||||||
|  |                             My galleries | ||||||
|  |                         </a> | ||||||
|  |                     </li> | ||||||
|  |                     <li class="RV-Navigation__item"> | ||||||
|  |                         <a href="#" class="RV-Navigation__link"> | ||||||
|  |                             Create gallery | ||||||
|  |                         </a> | ||||||
|  |                     </li> | ||||||
|  |                 </ul> | ||||||
|  |             </nav> | ||||||
|  |         </head> | ||||||
|  |         <main class="RV-Content"> | ||||||
|  |             {% block content %} | ||||||
|  |             {% endblock content %} | ||||||
|  |         </main> | ||||||
|  |         <footer class="RV-Footer"> | ||||||
|  |              | ||||||
|  |         </footer> | ||||||
|  |     </div> | ||||||
|  | </body> | ||||||
|  | </html> | ||||||
| @@ -0,0 +1,13 @@ | |||||||
|  | {% extends '../global.html' %} | ||||||
|  |  | ||||||
|  | {% load responsive_images %} | ||||||
|  |  | ||||||
|  | {% block content %} | ||||||
|  |     <sectoin class="RV-Images"> | ||||||
|  |         <li class="RV-Images__list"> | ||||||
|  |             {% for image in images %} | ||||||
|  |                 <img src="{% src image.image_file 200x200 %}"> | ||||||
|  |             {% endfor %} | ||||||
|  |         </li> | ||||||
|  |     </sectoin> | ||||||
|  | {% endblock content %} | ||||||
| @@ -0,0 +1,9 @@ | |||||||
|  | {% extends '../global.html' %} | ||||||
|  |  | ||||||
|  | {% block content %} | ||||||
|  |     <form method="POST" enctype="multipart/form-data"> | ||||||
|  |         {% csrf_token %} | ||||||
|  |         {{ form }} | ||||||
|  |         <button type="submit">Upload</button> | ||||||
|  |     </form> | ||||||
|  | {% endblock content %} | ||||||
							
								
								
									
										19
									
								
								django_web_galleries/web_galleries/urls.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								django_web_galleries/web_galleries/urls.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | |||||||
|  | from django.urls import path | ||||||
|  | from django.conf import settings | ||||||
|  | from django.conf.urls.static import static | ||||||
|  |  | ||||||
|  | from .views import ( | ||||||
|  |     ImageUploadView, | ||||||
|  |     PublicImageListView | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | urlpatterns = [ | ||||||
|  |     path('', PublicImageListView.as_view(), name='home'), | ||||||
|  |     path('upload/', ImageUploadView.as_view(), name='upload_image') | ||||||
|  | ] | ||||||
|  |  | ||||||
|  | if settings.DEBUG: | ||||||
|  |     urlpatterns += static( | ||||||
|  |         settings.MEDIA_URL, | ||||||
|  |         document_root=settings.MEDIA_ROOT | ||||||
|  |     ) | ||||||
| @@ -1,3 +1,55 @@ | |||||||
| from django.shortcuts import render | import secrets | ||||||
|  |  | ||||||
| # Create your views here. | from django.views import View | ||||||
|  | from django.views.generic.list import ListView | ||||||
|  | from django.shortcuts import render, redirect | ||||||
|  | from django.urls import reverse | ||||||
|  |  | ||||||
|  | from .forms import ImageUploadForm | ||||||
|  | from .models import Image | ||||||
|  |  | ||||||
|  | class ImageUploadView(View): | ||||||
|  |     def get(self, request): | ||||||
|  |         form = ImageUploadForm() | ||||||
|  |         return render( | ||||||
|  |             request, | ||||||
|  |             'upload_image/upload.html', | ||||||
|  |             { | ||||||
|  |                 'form': form | ||||||
|  |             } | ||||||
|  |         ) | ||||||
|  |  | ||||||
|  |     def post(self, request): | ||||||
|  |         form = ImageUploadForm( | ||||||
|  |             request.POST, | ||||||
|  |             request.FILES | ||||||
|  |         ) | ||||||
|  |  | ||||||
|  |         if form.is_valid(): | ||||||
|  |             image = form.save(commit=False) | ||||||
|  |  | ||||||
|  |             if image.private: | ||||||
|  |                 image.access_code = secrets.token_hex(32) | ||||||
|  |  | ||||||
|  |             image.save() | ||||||
|  |             return redirect( | ||||||
|  |                 reverse('home') | ||||||
|  |             ) | ||||||
|  |         else: | ||||||
|  |             form = ImageUploadForm() | ||||||
|  |             return render( | ||||||
|  |                 request, | ||||||
|  |                 'upload_image/upload.html', | ||||||
|  |                 { | ||||||
|  |                     'form': form | ||||||
|  |                 } | ||||||
|  |             ) | ||||||
|  |  | ||||||
|  | class PublicImageListView(ListView): | ||||||
|  |     model = Image | ||||||
|  |     paginate_by = 20 | ||||||
|  |     context_object_name = 'images' | ||||||
|  |     template_name = 'list_images/image_list.html' | ||||||
|  |  | ||||||
|  |     def get_queryset(self): | ||||||
|  |         return Image.objects.all().filter(private=False) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user