def post_list(request, category): category1 = Notice_category.objects.all() # gnb카티고리을 불러오는 쿼리셋 searchForm = PostSearchForm() category_id = Notice_category.objects.filter(id=category) for list_auth in category_id: try: if request.user.is_level <= list_auth.list_auth or request.user.is_superuser == True: posts = Post.objects.filter( category_id=category, created_date__lte=timezone.now()).order_by('-created_date') else: return render(request, 'about.html', { 'category': category1, 'searchForm': searchForm }) except: posts = Post.objects.filter( category_id=category, created_date__lte=timezone.now()).order_by('-created_date') page = request.GET.get('page', 1) paginator = Paginator(posts, 10) try: posts = paginator.page(page) except PageNotAnInteger: posts = paginator.page(1) except EmptyPage: posts = paginator.page(paginator.num_pages) return render( request, 'notice/post_list.html', { 'posts': posts, 'category_id': category_id, 'category': category1, 'searchForm': searchForm })
def get_context_data(self, **kwargs): # Call the base implementation first to get a context context = super().get_context_data(**kwargs) # Add in a QuerySet of all the books context['category'] = Notice_category.objects.all() #gnb카티고리을 불러오는 쿼리셋 context['searchForm'] = PostSearchForm() return context
def post_search(request): if 'search_word' in request.POST and request.POST.get('search_word'): sWord = request.POST.get('search_word', '') post = Post.objects.all() results = post.filter(title__icontains=sWord).distinct() searchForm = PostSearchForm() category1 = Notice_category.objects.all() # gnb카티고리을 불러오는 쿼리셋 return render( request, 'notice/post_search_list.html', { 'results': results, 'query': sWord, 'searchForm': searchForm, 'category': category1 })
def post_detail(request, pk, category): category1 = Notice_category.objects.all() # gnb카티고리을 불러오는 쿼리셋 category_id = Notice_category.objects.filter(id=category) searchForm = PostSearchForm() for detail_auth in category_id: try: if request.user.is_level <= detail_auth.detail_auth or request.user.is_superuser == True or request.user.is_level.exists( ) == False: post_detail = Post.objects.get(pk=pk, category=category) post = get_object_or_404(Post, pk=pk) # 파일,이미지 files = post.file_set.all() imges = post.imges_set.all() else: return render(request, 'about.html', { 'category': category1, 'searchForm': searchForm }) except: post_detail = Post.objects.get(pk=pk, category=category) post = get_object_or_404(Post, pk=pk) # 파일,이미지 files = post.file_set.all() imges = post.imges_set.all() # 댓글 페이지 comment_post = Comment.objects.filter( post_id=pk, created_date__lte=timezone.now()).order_by('-created_date') paginator_comment = Paginator(comment_post, 5) page = request.GET.get('page') try: contacts_comment = paginator_comment.page(page) except PageNotAnInteger: contacts_comment = paginator_comment.page(1) except EmptyPage: contacts_comment = paginator_comment.page(paginator_comment.num_pages) if request.method == "POST": form = CommentForm(request.POST) if form.is_valid(): comment = form.save(commit=False) word_content = Word_filtering.objects.filter( id=1, text__contains=comment.text).exists() if word_content == True: comment.author = request.user comment.post = post else: if request.user.is_authenticated: comment.author = request.user comment.post = post comment.save() return redirect('notice_detail:post_detail', pk=post.pk, category=category) else: return redirect('login') else: form = CommentForm() return render( request, 'notice/post_detail.html', { 'post_detail': post_detail, 'category': category1, 'form': form, 'comment_post': contacts_comment, 'files': files, 'imges': imges, 'searchForm': searchForm })
def post_edit(request, pk, category): post_author = Post.objects.filter(id=pk) category1 = Notice_category.objects.all() # gnb카티고리을 불러오는 쿼리셋 for username in post_author: if request.method == 'POST' or request.user.id == username.author_id or request.user.is_manager == True or request.user.is_superuser == True: category_id = Notice_category.objects.filter(id=category) post_edit = get_object_or_404(Post, pk=pk, category=category) form = PostForm(request.POST, instance=post_edit) searchForm = PostSearchForm() imges = ImgesForm() file = FlieForm() else: return redirect('notice_detail:post_detail', pk=username.id, category=category) if form.is_valid(): # 66,67행 글 제목과 내용 중에 비방글 내용이 존재 시 Ture을 반환한다. cleanr = re.compile('<.*?>') # 문자타입안에html태그제거 cleanc_html = re.sub(cleanr, '', post_edit.content) # 문자타입안에html태그제거 cleanr_content = cleanc_html.replace(" ", "") # 문자안에공백제거 # 글제목과 내용중에 비방글을 필터링해준다. word_content = Word_filtering.objects.filter( id=1, text__contains=cleanr_content).exists() word_subject = Word_filtering.objects.filter( id=1, text__contains=post_edit.title).exists() if word_content or word_subject: post = form.save(commit=False) post.author = request.user post.title = post_edit.title post.content = post_edit.content else: post = form.save(commit=False) post.author = request.user post.title = post_edit.title post.content = post_edit.content post.save() upflis = request.FILES.getlist('file') for upfl in upflis: file = File() file.file = upfl file.post = post file.save() if Imges.objects.filter(post_id=pk).exists(): imges_edit = Imges.objects.get(post_id=pk) else: imges_edit = Imges() upimges = request.FILES.getlist('imges') for upim in upimges: imges = imges_edit imges.imges = upim imges.post = post post.imges_check = True post.save() imges.save() return redirect('notice_detail:post_detail', pk=post.pk, category=category) else: form = PostForm(instance=post_edit) return render( request, 'notice/post_edit.html', { 'form': form, 'category': category1, 'category_id': category_id, 'file': file, 'imges': imges, 'searchForm': searchForm })
def post_new(request, category): if request.user.is_authenticated: ctgry = category searchForm = PostSearchForm() category_id = Notice_category.objects.filter(id=ctgry) category1 = Notice_category.objects.all() #gnb카티고리을 불러오는 쿼리셋 for writer_auth in category_id: if request.method == "POST" or request.user.is_level <= writer_auth.writer_auth or request.user.is_superuser == True: form = PostForm(request.POST) imges = ImgesForm() file = FlieForm() else: return render(request, 'about.html', { 'category': category1, 'searchForm': searchForm }) if form.is_valid(): post = form.save(commit=False) #66,67행 글 제목과 내용 중에 비방글 내용이 존재 시 Ture을 반환한다. cleanr = re.compile('<.*?>') #문자타입안에html태그제거 cleanc_html = re.sub(cleanr, '', post.content) #문자타입안에html태그제거 cleanr_content = cleanc_html.replace(" ", "") #문자안에공백제거 word_content = Word_filtering.objects.filter( id=1, text__contains=cleanr_content).exists() word_subject = Word_filtering.objects.filter( id=1, text__contains=post.title).exists() if word_content or word_subject: post.author = request.user post.category = writer_auth else: post.author = request.user post.category = writer_auth post.save() # 이미지,파일 upflis = request.FILES.getlist('file') for upfl in upflis: file = File() file.file = upfl file.post = post file.save() upimges = request.FILES.getlist('imges') for upim in upimges: imges = Imges() imges.imges = upim imges.post = post post.imges_check = True post.save() imges.save() return redirect('notice_detail:post_detail', pk=post.pk, category=ctgry) else: form = PostForm() imges = ImgesForm() file = FlieForm() return render( request, 'notice/post_edit.html', { 'form': form, 'category': category1, 'category_id': category_id, 'file': file, 'imges': imges, 'searchForm': searchForm })
def home(request): category = Notice_category.objects.all() # gnb카티고리을 불러오는 쿼리셋 category_title = [ '공지사항', '자유게시판', '겔러리게시판', 'Django', 'less', 'HTML', 'javascript', 'NORMAL-회원게시판' ] for category_title in category_title: if category_title == '공지사항': category_id1 = Notice_category.objects.filter(title=category_title) if category_title == '자유게시판': category_id2 = Notice_category.objects.filter(title=category_title) if category_title == '겔러리게시판': category_id3 = Notice_category.objects.filter(title=category_title) if category_title == 'Django': category_id4 = Notice_category.objects.filter(title=category_title) if category_title == 'less': category_id5 = Notice_category.objects.filter(title=category_title) if category_title == 'HTML': category_id6 = Notice_category.objects.filter(title=category_title) if category_title == 'javascript': category_id7 = Notice_category.objects.filter(title=category_title) if category_title == 'NORMAL-회원게시판': category_id8 = Notice_category.objects.filter(title=category_title) posts1 = Post.objects.filter( category=category_id1, created_date__lte=timezone.now()).order_by('-created_date')[:5] #공지사항 posts2 = Post.objects.filter( category=category_id2, created_date__lte=timezone.now()).order_by('-created_date')[:5] #자유게시판 posts3 = Post.objects.filter(category=category_id3, created_date__lte=timezone.now()).order_by( '-created_date')[:5] #겔러리게시판 posts4 = Post.objects.filter(category=category_id4, created_date__lte=timezone.now()).order_by( '-created_date')[:5] #Django posts5 = Post.objects.filter( category=category_id5, created_date__lte=timezone.now()).order_by('-created_date')[:5] #less posts6 = Post.objects.filter( category=category_id6, created_date__lte=timezone.now()).order_by('-created_date')[:5] #HTML posts7 = Post.objects.filter(category=category_id7, created_date__lte=timezone.now()).order_by( '-created_date')[:5] #javascript posts8 = Post.objects.filter(category=category_id8, created_date__lte=timezone.now()).order_by( '-created_date')[:5] #NORMAL-회원게시판 imges = Imges.objects.filter( created_date__lte=timezone.now()).order_by('-created_date') searchForm = PostSearchForm() return render( request, 'home.html', { 'posts1': posts1, 'posts2': posts2, 'posts3': posts3, 'posts4': posts4, 'posts5': posts5, 'posts6': posts6, 'posts7': posts7, 'posts8': posts8, 'category': category, 'imges': imges, 'searchForm': searchForm })
r'^notice/', include(('notice.urls', 'files_remove'), namespace='notice_files_remove')), url(r'^notice/post_search$', post_search, name='post_search'), url(r'^$', home, name='home'), url(r'^accounts/logout/$', auth_views.logout, {'next_page': '/'}, name='logout'), # 로그인 페이지에서 각카테고리(gnb)나오기 위해서는 extra_context 을사용하여 카테고리퀘리셋 을적용한다 url(r'^accounts/login/$', auth_views.login, { 'template_name': 'registration/login.html', 'extra_context': { 'category': Notice_category.objects.all(), 'searchForm': PostSearchForm() } }, name='login'), url(r'^auth/', include('social_django.urls', namespace='social')), url(r'^register/', UserRegisterView.as_view(), name='register'), url(r'^accounts/password_change/$', UserPasswordChangeView.as_view(), name='password_change'), url(r'^accounts/password_change_done/$', UserPasswordDoneView.as_view(), name='password_change_done'), #ajax게시글 내용단어필터링 url(r'^ajax/validate_content/$', ajax_word_filtering,