#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')) | ||||
| """ | ||||
| from django.contrib import admin | ||||
| from django.urls import path | ||||
| from django.urls import path, include | ||||
|  | ||||
| urlpatterns = [ | ||||
|     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