blog detail working
This commit is contained in:
parent
a87dd68bc7
commit
c78b0261ec
@ -1,7 +1,4 @@
|
|||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
|
||||||
# Register your models here.
|
|
||||||
|
|
||||||
from .models import Blog
|
from .models import Blog
|
||||||
|
|
||||||
admin.site.register(Blog)
|
admin.site.register(Blog)
|
||||||
|
@ -1,11 +1,18 @@
|
|||||||
from django.db import models
|
from django.db import models
|
||||||
import datetime
|
|
||||||
|
|
||||||
|
|
||||||
# Create your models here.
|
|
||||||
|
|
||||||
class Blog(models.Model):
|
class Blog(models.Model):
|
||||||
title = models.CharField(max_length=200)
|
title = models.CharField(max_length=200)
|
||||||
pubdate = models.DateTimeField()
|
pubdate = models.DateTimeField()
|
||||||
body = models.TextField(max_length=1000)
|
body = models.TextField(max_length=1000)
|
||||||
image = models.ImageField(upload_to='images/')
|
image = models.ImageField(upload_to='images/')
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.title
|
||||||
|
|
||||||
|
def summary(self):
|
||||||
|
return self.body[:100]
|
||||||
|
|
||||||
|
def pubdate_pretty(self):
|
||||||
|
return self.pubdate.strftime('%b %e %Y')
|
||||||
|
|
||||||
|
101
blog/templates/blog/allblogs.html
Normal file
101
blog/templates/blog/allblogs.html
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
<meta name="description" content="">
|
||||||
|
<meta name="author" content="Mark Otto, Jacob Thornton, and Bootstrap contributors">
|
||||||
|
<meta name="generator" content="Jekyll v3.8.6">
|
||||||
|
<title>Album example · Bootstrap</title>
|
||||||
|
|
||||||
|
<link rel="canonical" href="https://getbootstrap.com/docs/4.4/examples/album/">
|
||||||
|
|
||||||
|
<!-- Bootstrap core CSS -->
|
||||||
|
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"
|
||||||
|
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
|
||||||
|
|
||||||
|
<!-- Favicons -->
|
||||||
|
<link rel="apple-touch-icon" href="/docs/4.4/assets/img/favicons/apple-touch-icon.png" sizes="180x180">
|
||||||
|
<link rel="icon" href="/docs/4.4/assets/img/favicons/favicon-32x32.png" sizes="32x32" type="image/png">
|
||||||
|
<link rel="icon" href="/docs/4.4/assets/img/favicons/favicon-16x16.png" sizes="16x16" type="image/png">
|
||||||
|
<link rel="manifest" href="/docs/4.4/assets/img/favicons/manifest.json">
|
||||||
|
<link rel="mask-icon" href="/docs/4.4/assets/img/favicons/safari-pinned-tab.svg" color="#563d7c">
|
||||||
|
<link rel="icon" href="/docs/4.4/assets/img/favicons/favicon.ico">
|
||||||
|
<meta name="msapplication-config" content="/docs/4.4/assets/img/favicons/browserconfig.xml">
|
||||||
|
<meta name="theme-color" content="#563d7c">
|
||||||
|
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.bd-placeholder-img {
|
||||||
|
font-size: 1.125rem;
|
||||||
|
text-anchor: middle;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 768px) {
|
||||||
|
.bd-placeholder-img-lg {
|
||||||
|
font-size: 3.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<!-- Custom styles for this template -->
|
||||||
|
<link href="album.css" rel="stylesheet">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<header>
|
||||||
|
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
|
||||||
|
<a class="navbar-brand" href="#">Portfolio</a>
|
||||||
|
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup"
|
||||||
|
aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
|
||||||
|
<span class="navbar-toggler-icon"></span>
|
||||||
|
</button>
|
||||||
|
<div class="collapse navbar-collapse" id="navbarNavAltMarkup">
|
||||||
|
<div class="navbar-nav" ml-auto>
|
||||||
|
<a class="nav-item nav-link" href="#">Twitter</a>
|
||||||
|
<a class="nav-item nav-link" href="#">Resume</a>
|
||||||
|
<a class="nav-item nav-link active" href="#">Blog</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<main role="main">
|
||||||
|
<div class="container">
|
||||||
|
<h1 class="text-center pt-3">Sharad's Blog</h1>
|
||||||
|
<br/>
|
||||||
|
<br/>
|
||||||
|
<h2>Latest Posts</h2>
|
||||||
|
<hr/>
|
||||||
|
<div>
|
||||||
|
{% for blog in blogs.all %}
|
||||||
|
<h3><a href="">{{ blog.title }}</a></h3>
|
||||||
|
{{ blog.pubdate_pretty }}
|
||||||
|
<br />
|
||||||
|
<img class=img-fluid src="{{ blog.image.url }}" height="200" width="200" />
|
||||||
|
<br />
|
||||||
|
<p>{{ blog.summary }}</p>
|
||||||
|
<hr />
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<footer class="text-muted">
|
||||||
|
<div class="container text-center">
|
||||||
|
<p>(c) Sharad Ahlawat {% now "Y" %}</p>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"
|
||||||
|
integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n"
|
||||||
|
crossorigin="anonymous"></script>
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"
|
||||||
|
integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo"
|
||||||
|
crossorigin="anonymous"></script>
|
||||||
|
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"
|
||||||
|
integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6"
|
||||||
|
crossorigin="anonymous"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
1
blog/templates/blog/detail.html
Normal file
1
blog/templates/blog/detail.html
Normal file
@ -0,0 +1 @@
|
|||||||
|
{{ blog.title }}
|
7
blog/urls.py
Normal file
7
blog/urls.py
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
from django.urls import path
|
||||||
|
from . import views
|
||||||
|
|
||||||
|
urlpatterns = [
|
||||||
|
path('', views.allblogs, name='allblogs'),
|
||||||
|
path('<int:blog_id>/', views.detail, name='detail'),
|
||||||
|
]
|
@ -1,3 +1,12 @@
|
|||||||
from django.shortcuts import render
|
from django.shortcuts import render, get_object_or_404
|
||||||
|
from .models import Blog
|
||||||
|
|
||||||
# Create your views here.
|
|
||||||
|
def allblogs(request):
|
||||||
|
blogs = Blog.objects
|
||||||
|
return render(request, 'blog/allblogs.html', {'blogs': blogs})
|
||||||
|
|
||||||
|
|
||||||
|
def detail(request, blog_id):
|
||||||
|
blog = get_object_or_404(Blog, pk=blog_id)
|
||||||
|
return render(request, 'blog/detail.html', {'blog': blog})
|
||||||
|
@ -1,7 +1,4 @@
|
|||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
|
||||||
# Register your models here.
|
|
||||||
|
|
||||||
from .models import Job
|
from .models import Job
|
||||||
|
|
||||||
admin.site.register(Job)
|
admin.site.register(Job)
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
from django.db import models
|
from django.db import models
|
||||||
|
|
||||||
|
|
||||||
# Create your models here.
|
|
||||||
|
|
||||||
class Job(models.Model):
|
class Job(models.Model):
|
||||||
image = models.ImageField(upload_to='images/')
|
image = models.ImageField(upload_to='images/')
|
||||||
summary = models.CharField(max_length=200)
|
summary = models.CharField(max_length=200)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.summary
|
||||||
|
@ -1,10 +1,7 @@
|
|||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
|
|
||||||
from .models import Job
|
from .models import Job
|
||||||
|
|
||||||
|
|
||||||
# Create your views here.
|
|
||||||
|
|
||||||
def home(request):
|
def home(request):
|
||||||
jobs = Job.objects
|
jobs = Job.objects
|
||||||
return render(request, 'jobs/home.html', {'jobs': jobs})
|
return render(request, 'jobs/home.html', {'jobs': jobs})
|
||||||
|
@ -14,7 +14,7 @@ Including another URLconf
|
|||||||
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
|
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
|
||||||
"""
|
"""
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.urls import path
|
from django.urls import include, path
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.conf.urls.static import static
|
from django.conf.urls.static import static
|
||||||
import jobs.views
|
import jobs.views
|
||||||
@ -22,4 +22,5 @@ import jobs.views
|
|||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('admin/', admin.site.urls),
|
path('admin/', admin.site.urls),
|
||||||
path('', jobs.views.home, name='home'),
|
path('', jobs.views.home, name='home'),
|
||||||
|
path('blog/', include('blog.urls')),
|
||||||
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
||||||
|
Loading…
Reference in New Issue
Block a user