관리 메뉴

Storage Gonie

40. app1, app2 앱 통합하기 본문

웹개발/Django 웹서비스 개발(인프런)

40. app1, app2 앱 통합하기

Storage Gonie 2019. 2. 21. 17:52
반응형

시작하기에 앞서 app2 프로젝트 사본을 만들었고 이름을 django_apps_lotto_polls로 만들었다.


1. django_apps_lotto_polls 프로젝트에 app1프로젝트의 lotto 앱 폴더를 복사해온다.

- 한 프로젝트에 lotto, polls 2개의 앱폴더가 존재하는 상태로 만듬

2. app1프로젝트에서 urls.py를 복사해와 lotto 앱폴더 아래에 붙여넣기 해준다.

3. mysite/urls.py에 lotto앱의 url을 추가해준다.

urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^polls/', include('polls.urls')),
url(r'^lotto/', include('lotto.urls')),
]


4. lotto/urls.py에서 views 경로 수정

from . import views


5. lotto/urls.py에서 필요없는 urlpattern 을 제거 및 수정 및 app_name추가

- url(r'^lotto/~$')에서 'lotto'는 이제 필요 없으므로 지워줌

- index와 index2가 있는데 index2를 index로 바꿔주자. 즉, 하나는 지워준다. 이와 동시에 views.py에서 이와 같은 작업을 해준다.

app_name = 'lotto'

urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^new/$', views.post, name='new_lotto'),
url(r'^(?P<lottokey>[0-9]+)/detail/$', views.detail, name='detail'),
]

6. mysite/setting.py에서 lotto 앱 등록

INSTALLED_APPS = [
'polls',
'lotto',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]

7. lotto/templates/lotto에 있는 템플릿에서 name space가 지정되어있지 않은 url에 대해서 name space를 지정해준다.

- default.html에서.

<h2><a href="{% url 'lotto:new_lotto' %}"><span class="glyphicon glyphicon-plus btn btn-default"></span></a></h2>>
<h2><a href="{% url 'lotto:detail' lottokey=lotto.pk %}">{{lotto.text}}</a></h2>

8. lotto/views.py에서 url관련된 부분에 대해 name space를 지정해준다.

- post 메소드에서.

return redirect('lotto:index')           # urls에서 name속성에 맞는 쪽로 연결된다.

9. polls/templates/polls/base.html에서 body 부분에 아래코드 추가

<li><a href = "{% url 'lotto:index' %}">로또</a></li>

10. 마지막으로 mysite/urls.py에서 메인페이지 url패턴 추가하고 polls의 views import해주기

from django.conf.urls import url
from django.contrib import admin
from django.conf.urls import include
from polls import views

urlpatterns = [
url(r'^$', views.main, name = 'name'),
url(r'^admin/', admin.site.urls),
url(r'^polls/', include('polls.urls')),
url(r'^lotto/', include('lotto.urls')),
]

11. "python manage.py migrate" 실행 후 "python manage.py runserver"



반응형
Comments