from django import forms
from.models importBook,Category1classCategoryForm(forms.Form):classMeta:
model =Category1
fields ='__all__'
widgets ={'name':forms.TextInput(attrs={'class':'form-control'}),}classBookForm(forms.ModelForm):classMeta:
model =Book
fields ='__all__'
widgets ={'titile':forms.TextInput(attrs={'class':'form-control'}),'author':forms.TextInput(attrs={'class':'form-control'}),'photo_book':forms.FileInput(attrs={'class':'form-control'}),'photo_author':forms.FileInput(attrs={'class':'form-control'}),'pages':forms.NumberInput(attrs={'class':'form-control'}),'price':forms.NumberInput(attrs={'class':'form-control'}),'ratelday':forms.NumberInput(attrs={'class':'form-control'}),'rateltime':forms.NumberInput(attrs={'class':'form-control'}),'statue':forms.Select(attrs={'class':'form-control'}),'categry ':forms.Select(attrs={'class':'form-control'}),}
كود conten.html
{% extends 'base.html' %}
{% block content %}
<divstyle="direction: rtl;"class="wrapper"><!-- Content Wrapper. Contains page content --><divclass="content-wrapper"><!-- Content Header (Page header) --><!--الاحصائيات--><divclass="content"><divclass="container-fluid"><divclass="row"><divclass="col-lg-6"><divclass="card"><divclass="card-header border-0"><divclass="d-flex justify-content-between"><h3class="card-title">اجمالي عدد الكتب</h3></div></div><divclass="card-body"><divclass="d-flex"><pclass="d-flex flex-column"><spanclass="text-bold text-lg">500</span><span>اجمالي عدد الكتب</span></p></div><!-- /.d-flex --><divclass="position-relative mb-4"><canvasid="visitors-chart"height="200"></canvas></div></div></div><!-- /.card --></div><!-- /.col-md-6 --><divclass="col-lg-6"><divclass="card"><divclass="card-header border-0"><divclass="d-flex justify-content-between"><h3class="card-title">الارباح</h3></div></div><divclass="card-body"><divclass="d-flex"><pclass="d-flex flex-column"><spanid="totalsalarys"class="text-bold text-lg">$250</span><br></p></div><!-- /.d-flex --><divclass="position-relative mb-4"><canvasid="sales-chart"height="160"></canvas></div><divclass="d-flex flex-row justify-content-end"><spanclass="mr-2"><iclass="fas fa-square text-primary"></i> الاربح من بيع الكتب
<pid="soldtotals"></p></span><span><iclass="fas fa-square text-gray"></i> الارباح من استعارة الكتب
<pid="rentedtotals"></p></span></div></div></div></div><!-- /.col-md-6 --></div><!-- /.row --><!-- form add books --><divclass="row m-1 mb-3"><ahref="#bookform"class="btn btn-primary"data-toggle="collapse">+ اضافة كتاب</a></div><divid="bookform"class="card card-primary collapse"><divclass="card-header"><h3class="card-title">اضافة كتاب</h3></div><!-- /.card-header --><!-- form start --><formmethod="POST"enctype="multipart/form-data">
{% csrf_token %}
<divclass="card-body">
{{form}}
</div><!-- /.card-body --><divclass="card-footer"><buttontype="submit"class="btn btn-primary">اضافة</button></div></form></div><!-- /.card --></div><!-- end form add books --><!-- تصنيفات--><divclass="row justify-content-center mb-3"><divclass="col-4 "><ulclass="nav">
{% for cat in cate %}
<liclass="nav-item cat{{cat.id}}"><aid=""class="nav-link bg-primary"href="#">{{cat.name}}</a></li>
{% endfor %}
</ul></div></div><!-- books --><divclass="row">
{% for x in book %}
<!-- الكتب --><divid=""class="col-md-4 bookhide book{{x.categry.id}} book{{x.statue}}"><!-- Widget: user widget style 1 --><divid=""class="card card-widget widget-user "><!-- Add the bg color to the header using any of the bg-* classes --><!-- قائمة منسدلة --><divstyle="position: absolute;"class="btn-group"><buttontype="button"class="btn dropdown-toggle dropdown-toggle-split"data-toggle="dropdown"aria-haspopup="true"aria-expanded="false"><spanclass="sr-only">Toggle Dropdown</span></button><divclass="dropdown-menu"><aclass="dropdown-item"href="{% url "update" x.id %}">تعديل</a><aclass="dropdown-item"href="{% url "delete" x.id %}">حذف</a><!-- Button trigger modal --></div></div>
{% if x.photo_book %}
<divstyle="background:url({{x.photo_book.url}});background-size:cover;"class="widget-user-header bg-info">
{% else %}
<divclass="widget-user-header bg-info"></div>
{% endif %}
<h3class="widget-user-username">{{x.titile}}</h3><h5class="widget-user-desc">{{x.author}}</h5></div><divclass="widget-user-image">
{% if x.photo_author %}
<imgstyle="width:100px;height:100px;"class="img-circle elevation-2"src="{{x.photo_author.url}}"alt="User Avatar">
{% endif %}
</div><divclass="card-footer"><divclass="row"><divclass="col-sm-4 border-right"><divclass="description-block"><h5class="description-header">{{x.pages}}</h5><spanclass="description-text">صفحة</span></div><!-- /.description-block --></div><!-- /.col --><divclass="col-sm-4 border-right"><divclass="description-block">
{% if x.price %}
<h5class="description-header">{{x.price}}</h5><spanclass="description-text">السعر</span>
{% elif x.ratelday %}
<h5class="description-header">{{x.ratelday}}</h5><spanclass="description-text">في اليوم</span>
{% endif %}
</div><!-- /.description-block --></div><!-- /.col --><divclass="col-sm-4"><divclass="description-block">
{% if x.statue == "avab" %}
<h5class="description-header text-success">{{x.statue}}</h5><spanclass="description-text">الحالة</span>
{% elif x.statue == "ren" %}
<h5class="description-header text-warning">{{x.statue}}</h5><spanclass="description-text">الحالة</span>
{% else %}
<h5class="description-header text-danger">{{x.statue}}</h5><spanclass="description-text">الحالة</span>
{% endif %}
</div><!-- /.description-block --></div><!-- /.col --></div><!-- /.row --></div></div><!-- /.widget-user --></div><!-- نهاية الكتاب -->
{% endfor %}
<divclass="row"><divclass="col text-center"><!--اضف صورة هنا في حالة عدم وجود كتب--></div></div></div></div></div><!-- /.container-fluid --></div><!-- /.content --></div><!-- /.content-wrapper -->
{% endblock %}
كود sidebar.html
<!-- في المكان ده هحط سلايد بار --><!-- Main Sidebar Container --><asidestyle="position: fixed;"class="main-sidebar sidebar-dark-primary elevation-4"><!-- Brand Logo --><ahref="{% url 'index' %}"class="brand-link"><spanclass="brand-text font-weight-light">NOUVIL</span></a><!-- Sidebar --><divclass="sidebar"><!-- Sidebar user panel (optional) --><divclass="user-panel mt-3 pb-3 mb-3 d-flex"><divclass="image"></div><divclass="info"><ahref="{% url 'index' %}"class="d-block">Abdelrahman Gamal</a></div></div><!-- Sidebar Menu --><navclass="mt-2"><ulclass="nav nav-pills nav-sidebar flex-column"data-widget="treeview"role="menu"data-accordion="false"><liclass="nav-item"><ahref="{% url 'books' %}"class="nav-link"><iclass="nav-icon fas fa-th"></i><p>
New Books
</p></a></li><liclass="nav-item has-treeview"><ahref="#"class="nav-link"><iclass="nav-icon fas fa-copy"></i><p>
Category
<iclass="fas fa-angle-left right"></i></p></a><ulclass="nav nav-treeview"><liclass="nav-item"><aid="addcat"href="#"class="nav-link"><iclass="fa fa-plus "></i><pclass="text-light"> Add New </p></a></li><formid="cat"method="POST"><divid="catinput">
{% csrf_token %}
<inputtype="text"name="cate"><br><buttontype="submit"class="btn btn-success">save</button><buttonid="backcat"class="btn btn-primary ">back</button></div></form>
{% for cat in cate %}
<listyle="cursor: pointer;"class="nav-item cat{{cat.id}}"><aid=""class="nav-link"><iclass="far fa-circle nav-icon"></i><p>{{cat.name}}</p></a></li>
{% endfor %}
</ul></li><liclass="nav-header">الكتب المستعارة</li><listyle="cursor: pointer;"class="nav-item sale"><aid="statusSold"class="nav-link"><iclass="nav-icon far fa-circle text-danger"></i><pclass="text">تم بيعه</p></a></li><listyle="cursor: pointer;"class="nav-item ren"><aid=""class="nav-link"><iclass="nav-icon far fa-circle text-warning"></i><p>تم استعارته</p></a></li><listyle="cursor: pointer;"class="nav-item avab"><aid=""class="nav-link"><iclass="nav-icon far fa-circle text-info"></i><p>متاح</p></a></li></ul></nav><!-- /.sidebar-menu --></div><!-- /.sidebar --></aside>
كود base.html
{% load static %}
<!DOCTYPE html><htmllang="ar"><head><metacharset="utf-8"><metaname="viewport"content="width=device-width, initial-scale=1"><metahttp-equiv="x-ua-compatible"content="ie=edge"><title>Nouvil</title><linkrel="stylesheet"href="{% static 'plugins/fontawesome-free/css/all.min.css' %}"><!-- Font Awesome Icons --><linkrel="stylesheet"href="{% static 'plugins/jquery_datepacker/jquery_ui.css' %}"><!-- IonIcons --><linkrel="stylesheet"href="http://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css"><!-- Theme style --><linkrel="stylesheet"href="{% static 'dist/css/adminlte_ar.min.css' %}"><!-- Google Font: Source Sans Pro --><linkhref="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700"rel="stylesheet"></head><bodydir="rtl"class="hold-transition sidebar-mini">
{% include 'parts/nav.html' %}
{% include 'parts/sidebar.html' %}
{% block content %}
{% endblock %}
{% include 'parts/footer.html' %}
</div><!-- ./wrapper --><!-- REQUIRED SCRIPTS --><scriptsrc="{% static 'plugins/jquery_datepacker/jquery_ui.js' %}"></script><!-- jQuery --><scriptsrc="{% static 'plugins/jquery/jquery.min.js' %}"></script><!-- Bootstrap --><scriptsrc="{% static 'plugins/bootstrap/js/bootstrap.bundle.min.js' %}"></script><!-- AdminLTE --><scriptsrc="{% static 'dist/js/adminlte.js' %}"></script><!-- OPTIONAL SCRIPTS --><scriptsrc="{% static 'plugins/chart.js/Chart.min.js' %}"></script><scriptsrc="{% static 'dist/js/demo.js' %}"></script><!--<script src="dist/js/pages/dashboard3.js'"></script>
--><script>
$(document).ready(function(){
$('#myModal').on('shown.bs.modal',function(){
$('#myInput').trigger('focus')});/*here i will make loop for get id category and status for contact with books *//*حساب اجمالي الارباح و هي عبارة عن حاصل جمع سعر الكتب عند البيع بالاضافة الى سعر استعارة الكتاب*/});</script><script>
$(function(){'use strict'var ticksStyle ={
fontColor:'#495057',
fontStyle:'bold'}var mode ='index'var intersect =truevar $salesChart = $('#sales-chart')var salesChart =newChart($salesChart,{
type :'bar',
data :{
labels :['تفاصيل الارباح',],
datasets:[{
backgroundColor:'#007bff',
borderColor :'#007bff',
data :['50',]},{
backgroundColor:'#ced4da',
borderColor :'#ced4da',
data :['30',]}]},
options:{
maintainAspectRatio:false,
tooltips :{
mode : mode,
intersect: intersect
},
hover :{
mode : mode,
intersect: intersect
},
legend :{
display:false},
scales :{
yAxes:[{// display: false,
gridLines:{
display :true,
lineWidth :'4px',
color :'rgba(0, 0, 0, .2)',
zeroLineColor:'transparent'},
ticks : $.extend({
beginAtZero:true,// Include a dollar sign in the ticks
callback:function(value, index, values){if(value >=1000){
value /=1000
value +='k'}return'$'+ value
}}, ticksStyle)}],
xAxes:[{
display :true,
gridLines:{
display:false},
ticks : ticksStyle
}]}}});var pieChart = document.getElementById('visitors-chart').getContext('2d')var myPieChart =newChart(pieChart,{
type:'pie',
data:{
datasets:[{
data:['35','25','40'],
backgroundColor :["#27c100","#f3545d","#fdaf4b"],
borderWidth:10,}],
labels:['Available','Sold','Rented']},
options :{
responsive:true,
maintainAspectRatio:false,
legend:{
position :'bottom',
labels :{
fontColor:'#000',
fontSize:15,
usePointStyle :true,
padding:30}},
pieceLabel:{
render:'percentage',
fontColor:'white',
fontSize:14,},}})})</script><script>{%for x in book %}
$(".cat{{x.categry.id}}").click(function(){
$(".bookhide").hide()
$(".book{{x.categry.id}}").show()});
$(".book{{x.statue}}").click(function(){
$(".bookhide").hide()
$(".book{{x.statue}}").show()});{% endfor %}</script></body></html>
السؤال
Omar Mhmd
السلام عليكم
صنعت مشروع بواسطة فيديو من اليوتيوب .. لتطوير مهارتي
عبارة عن نظام ادارة مكتبة
المشكلة هي انه عند اضافة كتاب جديد يظهر لي هذا الخطأ
وعند عمل refrash لصفحة تظهر category اكثر من مرة بمعني انه يظهر مربع اخر له نفس الاسم رغم انني لم اضيفه
فما هو الحل
ها هو كود models
كود views
كود forms
كود conten.html
كود sidebar.html
كود base.html
واشكركم علي اجابتكم لسؤالي
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.