Study/Django(멋쟁이사자처럼 7기 운영진)

[멋사7기] 4주차 - 3. blog project 1, 2

안다희 2019. 1. 30. 23:40
728x90

bootstrap - navbar, title 검색 (color 바꾸는 것도 navbar 내리다보면 있음)

card 가져온건데 style을 지운 것 뿐.

 

 

이것을 그대로 구현해보자!!!!!!!!!

 

<nav class="navbar navbar-expand-lg navbar-dark bg-dark">

둘다 dark로 바꿈

 

 

나머지는 이전 포스트처럼 따라하면 만들 수 있다!

 

 

 

 

글쓰기 페이지 생성

 

1) home.html 에서 글쓰기 페이지로 넘어갈 수 있는 링크 생성

<a class="nav-link" href="{% url 'new' %}">글쓰기</a>

 

2) new.html 파일 생성

더보기
<head>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous">
 
</head>

<body>
 
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
 
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
<li class="nav-item active">
<a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="{% url 'new' %}">글쓰기</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropdown
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">Something else here</a>
</div>
</li>
<li class="nav-item">
<a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a>
</li>
</ul>
<form class="form-inline my-2 my-lg-0">
<input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
</form>
</div>
</nav>
 
<br>
 
 

 

 

<div class="container">
<form action="">
<h4>제목</h4>
<input type="text" name="title">
<br><br>

<h4>본문</h4>
<textarea cols="40" rows="10" name="body"></textarea>
<br><br>

<input class="btn btn-dark" type="submit" value="제출">
</form>
</div>

</body>

 

form 태그 ***

 

 

 

3) views.py 에서 new를 띄우라는 함수 만들어주기

def new(request):
return render(request, 'new.html')

 

4) urls.py에서 url 설정

path('blog/new', blog.views.new, name="new"),

 

 

5) 근데 아직 form태그의 action을 안정했지!

아까 new..html의 form태그로 돌아가서!

<form action="{% url 'create' %}">

 

6)그러면 url이 필요하겠지? urls.py

path('blog/create', blog.views.create, name="create"),

create함수가 실행될테니까 (html 파일 띄워주는게 아니라 create함수를 실행시켜주는것일뿐,)

 

7) 그러면 views.py에서 create함수 만들어주기

from django.utils import timezone
from django.shortcuts import render, get_object_or_404, redirect

 

def create(request): # 입력받은 데이터를 데이터베이스에 넣어주는 함수
blog = Blog()
blog.title = request.GET['title'] # wordcount때 배웠음
blog.body = request.GET['body']
blog.pub_date = timezone.datetime.now() # 현재시간!! import 해줘야하는 것이 있음
blog.save() # 객체.delete() : 지우기
return redirect('/blog/' + str(blog.id)) # 이 url로 넘기세요 (render와 다름) # id는 int니까 str로 형변환

 

 

**) redirect(URL)

redirect("https://google.com") 이렇게 해도 됨

 

**) render는 인자를 전달해서 html에서 활용하고 싶을 때!

출처: https://mingos-habitat.tistory.com/34 [밍고의서식지:티스토리]