diff --git a/book/djbook/mysite/bookmark/__init__.py b/book/djbook/mysite/bookmark/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/book/djbook/mysite/bookmark/admin.py b/book/djbook/mysite/bookmark/admin.py
new file mode 100644
index 00000000..ec38af01
--- /dev/null
+++ b/book/djbook/mysite/bookmark/admin.py
@@ -0,0 +1,8 @@
+from django.contrib import admin
+from bookmark.models import Bookmark
+
+# Register your models here.
+@admin.register(Bookmark)
+class BookmarkAdmin(admin.ModelAdmin):
+ list_display = ('id','title','url')
+
diff --git a/book/djbook/mysite/bookmark/apps.py b/book/djbook/mysite/bookmark/apps.py
new file mode 100644
index 00000000..3856c79f
--- /dev/null
+++ b/book/djbook/mysite/bookmark/apps.py
@@ -0,0 +1,6 @@
+from django.apps import AppConfig
+
+
+class BookmarkConfig(AppConfig):
+ default_auto_field = 'django.db.models.BigAutoField'
+ name = 'bookmark'
diff --git a/book/djbook/mysite/bookmark/migrations/0001_initial.py b/book/djbook/mysite/bookmark/migrations/0001_initial.py
new file mode 100644
index 00000000..1c6d993e
--- /dev/null
+++ b/book/djbook/mysite/bookmark/migrations/0001_initial.py
@@ -0,0 +1,22 @@
+# Generated by Django 3.2.5 on 2021-07-11 16:04
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ initial = True
+
+ dependencies = [
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='Bookmark',
+ fields=[
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('title', models.CharField(blank=True, max_length=100, verbose_name='TITLE')),
+ ('url', models.URLField(unique=True, verbose_name='URL')),
+ ],
+ ),
+ ]
diff --git a/book/djbook/mysite/bookmark/migrations/__init__.py b/book/djbook/mysite/bookmark/migrations/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/book/djbook/mysite/bookmark/models.py b/book/djbook/mysite/bookmark/models.py
new file mode 100644
index 00000000..ebb6ff54
--- /dev/null
+++ b/book/djbook/mysite/bookmark/models.py
@@ -0,0 +1,9 @@
+from django.db import models
+
+# Create your models here.
+class Bookmark(models.Model):
+ title = models.CharField('TITLE', max_length=100, blank=True)
+ url = models.URLField('URL', unique=True)
+
+ def __str__(self):
+ return self.title
\ No newline at end of file
diff --git a/book/djbook/mysite/bookmark/templates/bookmark/detail.html b/book/djbook/mysite/bookmark/templates/bookmark/detail.html
new file mode 100644
index 00000000..329e920e
--- /dev/null
+++ b/book/djbook/mysite/bookmark/templates/bookmark/detail.html
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+ Document
+
+
+
+
+
{{ object.title }}
+
+
+
+
\ No newline at end of file
diff --git a/book/djbook/mysite/bookmark/templates/bookmark/list.html b/book/djbook/mysite/bookmark/templates/bookmark/list.html
new file mode 100644
index 00000000..36b4492e
--- /dev/null
+++ b/book/djbook/mysite/bookmark/templates/bookmark/list.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+ Document
+
+
+
+
bookmark list
+
+
+ {% for bookmark in object_list %}
+ - {{ bookmark }}
+ {% endfor %}
+
+
+
+
\ No newline at end of file
diff --git a/book/djbook/mysite/bookmark/tests.py b/book/djbook/mysite/bookmark/tests.py
new file mode 100644
index 00000000..7ce503c2
--- /dev/null
+++ b/book/djbook/mysite/bookmark/tests.py
@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.
diff --git a/book/djbook/mysite/bookmark/urls.py b/book/djbook/mysite/bookmark/urls.py
new file mode 100644
index 00000000..0f43ad71
--- /dev/null
+++ b/book/djbook/mysite/bookmark/urls.py
@@ -0,0 +1,9 @@
+# from django.contrib import admin
+# from django.urls import path
+
+# from bookmark.views import BookmarkLV, BookmarkDV
+
+# urlpatterns = [
+# path('admin/', admin.site.urls),
+# path('bookmark/', admin.site.urls),
+# ]
\ No newline at end of file
diff --git a/book/djbook/mysite/bookmark/views.py b/book/djbook/mysite/bookmark/views.py
new file mode 100644
index 00000000..35d3842b
--- /dev/null
+++ b/book/djbook/mysite/bookmark/views.py
@@ -0,0 +1,12 @@
+from django.shortcuts import render
+from bookmark.models import Bookmark
+from django.views.generic import ListView, DetailView
+
+class BookmarkLV(ListView):
+ model = Bookmark
+ template_name = 'bookmark/list.html'
+
+
+class BookmarkDV(DetailView):
+ model = Bookmark
+ template_name = 'bookmark/detail.html'
diff --git a/book/djbook/mysite/manage.py b/book/djbook/mysite/manage.py
new file mode 100755
index 00000000..a7da6671
--- /dev/null
+++ b/book/djbook/mysite/manage.py
@@ -0,0 +1,22 @@
+#!/usr/bin/env python
+"""Django's command-line utility for administrative tasks."""
+import os
+import sys
+
+
+def main():
+ """Run administrative tasks."""
+ os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
+ try:
+ from django.core.management import execute_from_command_line
+ except ImportError as exc:
+ raise ImportError(
+ "Couldn't import Django. Are you sure it's installed and "
+ "available on your PYTHONPATH environment variable? Did you "
+ "forget to activate a virtual environment?"
+ ) from exc
+ execute_from_command_line(sys.argv)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/book/djbook/mysite/mysite/__init__.py b/book/djbook/mysite/mysite/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/book/djbook/mysite/mysite/asgi.py b/book/djbook/mysite/mysite/asgi.py
new file mode 100644
index 00000000..fcc89206
--- /dev/null
+++ b/book/djbook/mysite/mysite/asgi.py
@@ -0,0 +1,16 @@
+"""
+ASGI config for mysite project.
+
+It exposes the ASGI callable as a module-level variable named ``application``.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/3.2/howto/deployment/asgi/
+"""
+
+import os
+
+from django.core.asgi import get_asgi_application
+
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
+
+application = get_asgi_application()
diff --git a/book/djbook/mysite/mysite/urls.py b/book/djbook/mysite/mysite/urls.py
new file mode 100644
index 00000000..41180c12
--- /dev/null
+++ b/book/djbook/mysite/mysite/urls.py
@@ -0,0 +1,24 @@
+"""mysite URL Configuration
+
+The `urlpatterns` list routes URLs to views. For more information please see:
+ https://docs.djangoproject.com/en/3.2/topics/http/urls/
+Examples:
+Function views
+ 1. Add an import: from my_app import views
+ 2. Add a URL to urlpatterns: path('', views.home, name='home')
+Class-based views
+ 1. Add an import: from other_app.views import Home
+ 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
+Including another URLconf
+ 1. Import the include() function: from django.urls import include, path
+ 2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
+"""
+from django.contrib import admin
+from django.urls import path
+from bookmark.views import BookmarkLV, BookmarkDV
+
+urlpatterns = [
+ path('admin/', admin.site.urls),
+ path('bookmark/', BookmarkLV.as_view(),name='index'),
+ path('bookmark/', BookmarkDV.as_view(),name='detail'),
+]
diff --git a/book/djbook/mysite/mysite/wsgi.py b/book/djbook/mysite/mysite/wsgi.py
new file mode 100644
index 00000000..fa2e052a
--- /dev/null
+++ b/book/djbook/mysite/mysite/wsgi.py
@@ -0,0 +1,16 @@
+"""
+WSGI config for mysite project.
+
+It exposes the WSGI callable as a module-level variable named ``application``.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/3.2/howto/deployment/wsgi/
+"""
+
+import os
+
+from django.core.wsgi import get_wsgi_application
+
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
+
+application = get_wsgi_application()