Вы находитесь на странице: 1из 70

django-crispy-forms

Miguel Araujo
@maraujop

Django forms

Django forms
form.as_ul
form.as_p
form.as_table

Django forms
class ExampleForm(forms.Form):
username = forms.CharField()
email = forms.CharField()

Django forms
{{ example_form.as_ul }}
<li>
<label for="id_username">Username:</label>
<input type="text" name="username" id="id_username">
</li>
<li>
<label for="id_email">Email:</label>
<input type="text" name="email" id="id_email">
</li>

How about divs?

Reorder fields?

Django forms
class ExampleForm(forms.Form):
email = forms.CharField()
username = forms.CharField()

Moving chunks of code

Django forms
class ExampleForm(forms.Form):

class ExampleForm(forms.Form):

email = forms.CharField()

username = forms.CharField()

username = forms.CharField()

email = forms.CharField()

Moving chunks of code

Django forms
class ExampleForm(forms.Form):
email = forms.CharField()
username = forms.CharField()
class ExtraFieldForm(ExampleForm):
comment = forms.CharField()

Make comment the first field?

Django forms
class ExtraFieldForm(ExampleForm):
comment = forms.CharField()
def __init__(self, *args, **kwargs):
super(ExtraFieldForm, self).__init__(*args, **kwargs)
self.fields.keyOrder = ['comment', 'email', 'username']

self.fields is a SortedDict
self.fields.keyOrder is a list ['username', 'email', 'comment']

Django forms
What if I have 100 fields?

class ExtraFieldForm(ExampleForm):
comment = forms.CharField()
def __init__(self, *args, **kwargs):
super(ExtraFieldForm, self).__init__(*args, **kwargs)
self.fields.keyOrder.remove('comment')
self.fields.keyOrder.insert(0, 'comment')

Django ModelForms
class ExampleForm(forms.ModelForm):
class Meta:
model = ExampleModel
fields = ('username', 'email')

ModelForms are different, why?

Customize output?

Asteriks for required fields


{% for field in form %}
{{ field }} {% if field.field.required %}(*){% endif %}
{% endfor %}

Asteriks for required fields


{% for field in form %}
{{ field }} {% if field.field.required %}(*){% endif %}
{% endfor %}

What about field.errors ?


What about form.non_field_errors ?
etc.

Something more
complex?

django-crispy-forms

Formerly known as django-uni-form, created by Daniel Greenfeld


@pydanny in 2008

I joined the project in the middle of 2010 and became lead developer
38 contributors
Tested and thoroughly used
Two template packs: bootstrap & uni_form CRISPY_TEMPLATE_PACK

django-crispy-forms

A filter |crispy
A tag {% crispy %}
They work on forms, modelforms and formsets

|crispy filter

Easy div format


No need to change form code at all
{% load crispy_forms_tags %}
{{ example_form|crispy }}

Django forms
{{ example_form|crispy }}
<div id="div_id_username" class="clearfix control-group">
<label for="id_username" class="control-label requiredField">Username<span class="asteriskField">*</span></label>
<div class="controls">
<input id="id_username" type="text" class="textinput textInput" name="username">
</div>
</div>
<div id="div_id_email" class="clearfix control-group">
<label for="id_email" class="control-label requiredField">Email<span class="asteriskField">*</span></label>
[...]

{% crispy %} tag

I don't like writing HTML for forms


I need customization power
They need to be as DRY as possible

{% crispy %} tag
{% crispy form [helper] %}
{% crispy example_form %}
<form class="" method="post">
<div style="display:none"><input type="hidden" name="csrfmiddlewaretoken" ...></div>
<div id="div_id_username" class="clearfix control-group">
<label for="id_username" class="control-label requiredField">Username<span class="asteriskField">*</span>
</label>
<div class="controls">
<input id="id_username" type="text" class="textinput textInput" name="username">
</div>
</div>
[...]
</form>

{% crispy %} tag
{% crispy form [helper] %}
{% crispy example_form %}

How do we customize this output?

<form class="" method="post">


<div style="display:none"><input type="hidden" name="csrfmiddlewaretoken" ...></div>
<div id="div_id_username" class="clearfix control-group">
<label for="id_username" class="control-label requiredField">Username<span class="asteriskField">*</span>
</label>
<div class="controls">
<input id="id_username" type="text" class="textinput textInput" name="username">
</div>
</div>
[...]
</form>

FormHelper

They control global form rendering behaviour


They are form decoupled

FormHelper attributes

form_method: helper.form_method = 'post'


form_action: helper.form_action = 'addItem'
form_id
form_class
form_tag: helper.form_tag = False

FormHelper
helpers.py

class ExampleFormHelper(FormHelper):
form_method = 'post'
form_id = 'example-form-id'
Template

{% crispy example_form example_form_helper %}

Attaching FormHelper
helpers.py
class ExampleFormHelper(FormHelper):
layout = Layout('comment', 'username', 'email')

forms.py
class ExampleForm(forms.Form):

helper = ExampleFormHelper()

Template

{% crispy example_form %}

Coupled FormHelper
forms.py

class ExampleForm(forms.Form):
helper = FormHelper()
helper.form_method = 'post'
helper.form_id = 'example-form-id'
Template

{% crispy example_form %}

Custom FormHelper attributes


forms.py

class ExampleForm(forms.Form):
helper = FormHelper()
helper.help_text_as_placeholder = True
Crispy-forms Templates

{{ help_text_as_placeholder }}

Programmatic
layouts

Special attribute layout and Layout class


forms.py

class ExtraFieldForm(forms.Form):
helper = FormHelper()
helper.layout = Layout('comment', 'username', 'email')
Template

{% crispy example_form %}

Layouts
Basic Layout for ExtraFieldForm

Layout(
'comment',
'email',
'username',
)

Layouts

Custom output is defined by a Python layout


Flexible and highly reusable

Layouts
A bit more complex Layout

Layout(

Div(
'comment',
'username',
css_id="div-wrapping-comment-and-username"
),
)

Layouts
A bit more complex Layout

Layout(

Div(

Beware that layouts are rendered strict

'comment',
'username',
css_id="div-wrapping-comment-and-username"
),
)

Layouts
Layout power comes from layout objects:

They are Python classes


Every layout object has an associated template

Layout objects
Div(
'comment',
'username',
css_id="div-wrapping-fields",
css_class="crispy-divs",
data-markup="crispy rocks"
)

Layout objects
Fieldset(
"This is the legend of the fieldset",
'comment',
'username',
css_class="fieldsets",
)

Layout objects
HTML(
"""<p>HTML code embedded. You can access the context from
where form is rendered. Hi {{ user.username }}</p>"""
)
HTML(
"{% include 'template.html' %}"
)

Layout objects
Submit('name', 'value')
FormActions(
Submit('save_changes', 'Save changes', css_class="btn-primary"),
Submit('cancel', 'Cancel'),
)

Layout objects
Setting attributes to fields

In Django
class ExampleForm(forms.Form):
username = forms.CharField(
widget = forms.TextInput(attrs={'class': 'whatever', 'autocomplete': 'off'})
)

Layout objects
Setting attributes to fields

In Django
class ExampleForm(forms.Form):
username = forms.CharField(
widget = forms.TextInput(attrs={'class': 'whatever', 'autocomplete': 'off'})
)

In Crispy-forms
Field('username', css_class='whatever', autocomplete='off')

Nested Layout objects


Div(
Div(
'name',
'value'
),
HTML("Hero?")
)

Crispy-forms internals

Layout has a fields attribute


All layout objects have a fields attribute

Layout decoupled
class GlobalLayout(Layout):
def __init__(self, *args, **kwargs):
self.fields = ['username', 'email']

GlobalLayout('comment')

self.fields.append(args)
class LayoutChunk(Layout):
def __init__(self):
self.fields = [
HTML("Hero?"),
Div('name')
]

LayoutChunk()

Layout composition
class ComplexForm(forms.ModelForm):
helper = FormHelper()
helper.layout = Layout(
GlobalLayout(),
'extra_field'
)

Dynamic Layouts
views.py

def view(request):
form = ExampleForm()
form.helper.layout.fields.append(HTML("<p>Added extra HTML</p>"))
[...]
return render(request, 'template.html', {'form': form})

Dynamic Layouts
! If you manipulate a helper, use an instance variable
class ExampleForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
self.helper = FormHelper()
self.helper.layout = Layout(
'comment',
'username'
)

Custom Layout object


TR('username')
<tr><td>{{ field }}</td></tr>

Custom Layout object


class TR(object):

template = 'myTemplate.html' # <tr><td>{{ field|safe }}</td></tr>


def __init__(self, field):
self.field = field
def render(self, form, form_style, context):
field = render_field(field, form, form_style, context)
return render_to_string(self.template, Context({'field': field}))

Examples

Crispy-forms
templates

Templates

Can be easily overriden at various levels


There are layout templates and global templates

Overriding Layout objects templates


Globally

from crispy_forms.layout import Div


Div.template = 'mydiv.html'

Individually

Div('field_name', template='mydiv.html')

field.html template
crispy_forms/templates/{bootstrap|uni_form}/field.html
<div id="div_{{ field.auto_id }}" class="...>
<label ...>
{% if field|css_class == 'radioselect' %}
{% include 'bootstrap/layout/radioselect.html' %}
{% endif %}
[...]
{% if field|css_class != "radioselect" and ... %}
{% crispy_field field %}
{% include 'bootstrap/layout/help_text_and_errors.html' %}
{% endif %}
</div>

field.html template
crispy_forms/templates/{bootstrap|uni_form}/field.html
<div id="div_{{ field.auto_id }}" class="...>
<label ...>
{% if field|css_class == 'radioselect' %}
{% include 'bootstrap/layout/radioselect.html' %}
{% endif %}
[...]
{% if field|css_class != "radioselect" and ... %}
{% crispy_field field %}

{% crispy_field field %} != {{ field }}

{% include 'bootstrap/layout/help_text_and_errors.html' %}
{% endif %}
</div>

Examples

All selects using chosen


class AnimalForm(forms.form):
animal = forms.ChoiceField(choices=[
('cat', 'cat'),
('dog', 'dog'),
])
food = forms.ChoiceField(choices=[
('meat', 'meat'),
('fish', 'fish'),
])
helper = FormHelper()
helper.form_class = 'form-horizontal'

$(document).ready(function () {
$(".chzn-select").chosen();
});

All selects using chosen


field.html
{% if field|css_class == "select" %}
<div class="controls">
{% crispy_field field 'class' 'chzn-select' %}
</div>
{% endif %}
{% if field|css_class != "checkboxselectmultiple" and
field|css_class != "radioselect" and
field|css_class != "select" %}
[...]

Field labels as holders

.holder {
color: #999;
font-size: 19px;
position: relative;
left: -210px;
top: 4px;
}

Field labels as holders


field.html (Using a custom attribute)
{% if not label_as_holder and field.label and not field|is_checkbox %}
<label for="{{ field.id_for_label }}" class="control-label" ...> {{ field.label|safe }} </label>
{% endif %}
{% crispy_field field %}
{% if label_as_holder %}
<span class="holder {% if field.value %}hidden{% endif %}">{{ field.label }}</span>
{% endif %}

Scratching the surface

There is more power, filters, layout objects, attributes, etc.


Javascript validation
Visit the docs django-crispy-forms.rtfd.org
There is more coming

Thanks,
questions?
@maraujop

Вам также может понравиться

  • Fomr
    Fomr
    Документ5 страниц
    Fomr
    Alejandro Meza
    Оценок пока нет
  • Bonel
    Bonel
    Документ21 страница
    Bonel
    Serge bonel Dafonseca
    Оценок пока нет
  • Untitled Document-11
    Untitled Document-11
    Документ94 страницы
    Untitled Document-11
    Fred
    Оценок пока нет
  • Login &logout Operation
    Login &logout Operation
    Документ8 страниц
    Login &logout Operation
    Chaitanya
    Оценок пока нет
  • Pythonescoool
    Pythonescoool
    Документ19 страниц
    Pythonescoool
    Michel Rosales
    Оценок пока нет
  • Source Code
    Source Code
    Документ8 страниц
    Source Code
    Anas Musa
    Оценок пока нет
  • Source Code PHP
    Source Code PHP
    Документ3 страницы
    Source Code PHP
    Vikrant Chalotra
    Оценок пока нет
  • Untitled Document
    Untitled Document
    Документ8 страниц
    Untitled Document
    yaseenshaik251219
    Оценок пока нет
  • On Sale - WEB Parte II
    On Sale - WEB Parte II
    Документ55 страниц
    On Sale - WEB Parte II
    Trucos de programacion
    Оценок пока нет
  • Templates
    Templates
    Документ10 страниц
    Templates
    Michel Rosales
    Оценок пока нет
  • Atelier8 - Authentification
    Atelier8 - Authentification
    Документ13 страниц
    Atelier8 - Authentification
    Hassan Hachicha
    Оценок пока нет
  • Web Site Artikel
    Web Site Artikel
    Документ10 страниц
    Web Site Artikel
    Mis 3
    Оценок пока нет
  • Form Div Div Div Div Label Label Input Span &NBSP Span Span Span Div Div Div Div Label Label Input
    Form Div Div Div Div Label Label Input Span &NBSP Span Span Span Div Div Div Div Label Label Input
    Документ1 страница
    Form Div Div Div Div Label Label Input Span &NBSP Span Span Span Div Div Div Div Label Label Input
    Andres Camargo
    Оценок пока нет
  • Usuarios
    Usuarios
    Документ32 страницы
    Usuarios
    Antonio jhonny Cama
    Оценок пока нет
  • All Data
    All Data
    Документ2 страницы
    All Data
    هيمن هةولير
    Оценок пока нет
  • Build A Survey Form
    Build A Survey Form
    Документ7 страниц
    Build A Survey Form
    Wahyu Arif Kurniawan
    Оценок пока нет
  • Michel Rosales Python Fastapi
    Michel Rosales Python Fastapi
    Документ15 страниц
    Michel Rosales Python Fastapi
    Michel Rosales
    Оценок пока нет
  • Emmet Cheat Sheet
    Emmet Cheat Sheet
    Документ15 страниц
    Emmet Cheat Sheet
    Manoj Kumar
    Оценок пока нет
  • Listing Program
    Listing Program
    Документ24 страницы
    Listing Program
    brook d rouge
    Оценок пока нет
  • (QUIZ) (Show Comment With User Name) (PHP Code)
    (QUIZ) (Show Comment With User Name) (PHP Code)
    Документ8 страниц
    (QUIZ) (Show Comment With User Name) (PHP Code)
    logoempire 004
    Оценок пока нет
  • Customize Laravel Jetstream (Registration and Login) - DeV Community
    Customize Laravel Jetstream (Registration and Login) - DeV Community
    Документ13 страниц
    Customize Laravel Jetstream (Registration and Login) - DeV Community
    alexis ayala jimeno
    Оценок пока нет
  • Submitted By:: Lab Task Subject: Web Engineering
    Submitted By:: Lab Task Subject: Web Engineering
    Документ9 страниц
    Submitted By:: Lab Task Subject: Web Engineering
    M Nabil
    Оценок пока нет
  • Lecture 138 - DIALOGS - DIALOGSdotHTML
    Lecture 138 - DIALOGS - DIALOGSdotHTML
    Документ7 страниц
    Lecture 138 - DIALOGS - DIALOGSdotHTML
    Maher Makkieh
    Оценок пока нет
  • Listing Program
    Listing Program
    Документ59 страниц
    Listing Program
    Muhammad Irvan Sanjaya
    Оценок пока нет
  • Flask Blog
    Flask Blog
    Документ24 страницы
    Flask Blog
    stephen kimeu
    Оценок пока нет
  • Laraver Login Personalizado
    Laraver Login Personalizado
    Документ11 страниц
    Laraver Login Personalizado
    to tavares
    Оценок пока нет
  • Aladino Zulmar Abadi - Desain Form
    Aladino Zulmar Abadi - Desain Form
    Документ15 страниц
    Aladino Zulmar Abadi - Desain Form
    Din Din
    Оценок пока нет
  • Tugas Membuat Web
    Tugas Membuat Web
    Документ14 страниц
    Tugas Membuat Web
    Sandi Samudra
    Оценок пока нет
  • Lab Sheet-5
    Lab Sheet-5
    Документ7 страниц
    Lab Sheet-5
    sowmiya
    Оценок пока нет
  • Laravel 8 Jet Live
    Laravel 8 Jet Live
    Документ31 страница
    Laravel 8 Jet Live
    tcm kreasi
    Оценок пока нет
  • Social
    Social
    Документ13 страниц
    Social
    ro
    Оценок пока нет
  • DWSL PR
    DWSL PR
    Документ19 страниц
    DWSL PR
    Parth Ramani
    Оценок пока нет
  • Exploit Joomla2222
    Exploit Joomla2222
    Документ2 страницы
    Exploit Joomla2222
    Debby Undangan Tulungagung
    Оценок пока нет
  • Index
    Index
    Документ4 страницы
    Index
    PATEL OMKUMAR
    Оценок пока нет
  • Pemrograman Framework Modul 8
    Pemrograman Framework Modul 8
    Документ10 страниц
    Pemrograman Framework Modul 8
    rama pangestu
    Оценок пока нет
  • New Text Document
    New Text Document
    Документ35 страниц
    New Text Document
    bogdanb1
    Оценок пока нет
  • MODUL 5.2 CRUD DGN PHP OOP
    MODUL 5.2 CRUD DGN PHP OOP
    Документ6 страниц
    MODUL 5.2 CRUD DGN PHP OOP
    Lavina
    Оценок пока нет
  • Lecture 4
    Lecture 4
    Документ10 страниц
    Lecture 4
    Markos Mathewos
    Оценок пока нет
  • Responsive Web Design Free Code Camp
    Responsive Web Design Free Code Camp
    Документ18 страниц
    Responsive Web Design Free Code Camp
    sangiwenmoyo
    Оценок пока нет
  • Asdfg
    Asdfg
    Документ3 страницы
    Asdfg
    Nima Dorji
    Оценок пока нет
  • U 3321312
    U 3321312
    Документ3 страницы
    U 3321312
    kyoya Hibarisan
    Оценок пока нет
  • Doctype HTML
    Doctype HTML
    Документ11 страниц
    Doctype HTML
    talmiankinyanjui
    Оценок пока нет
  • Art Gallery Project 21-07
    Art Gallery Project 21-07
    Документ12 страниц
    Art Gallery Project 21-07
    S.M.S
    Оценок пока нет
  • Code mẩu giao diện
    Code mẩu giao diện
    Документ19 страниц
    Code mẩu giao diện
    DATN FOOOS
    Оценок пока нет
  • Act2 Data Entrypython
    Act2 Data Entrypython
    Документ4 страницы
    Act2 Data Entrypython
    monzonesbrenncarlo
    Оценок пока нет
  • Bootstrap's Default Settings: .Form-Control
    Bootstrap's Default Settings: .Form-Control
    Документ5 страниц
    Bootstrap's Default Settings: .Form-Control
    Rivan Arifiyansyah
    Оценок пока нет
  • HTML
    HTML
    Документ7 страниц
    HTML
    jeeva
    Оценок пока нет
  • Ujikom Safa 2023
    Ujikom Safa 2023
    Документ27 страниц
    Ujikom Safa 2023
    chikok9911
    Оценок пока нет
  • Osc - Experiment - 6
    Osc - Experiment - 6
    Документ11 страниц
    Osc - Experiment - 6
    Tanmay Navandar
    Оценок пока нет
  • Bootstrap Datetimepicker Min Css Example
    Bootstrap Datetimepicker Min Css Example
    Документ7 страниц
    Bootstrap Datetimepicker Min Css Example
    Bobbie N Ananda
    Оценок пока нет
  • Registration and Login Form
    Registration and Login Form
    Документ33 страницы
    Registration and Login Form
    Aniket Nsc0025
    100% (1)
  • ArunRocks - Building A Hacker News Clone in Django - Part 4 (AJAX and Mixin)
    ArunRocks - Building A Hacker News Clone in Django - Part 4 (AJAX and Mixin)
    Документ11 страниц
    ArunRocks - Building A Hacker News Clone in Django - Part 4 (AJAX and Mixin)
    ms6675
    Оценок пока нет
  • Add User
    Add User
    Документ2 страницы
    Add User
    Frankie Grad
    Оценок пока нет
  • Project 2 Intro To Web
    Project 2 Intro To Web
    Документ8 страниц
    Project 2 Intro To Web
    Raymond Dela Cruz
    Оценок пока нет
  • 0720
    0720
    Документ6 страниц
    0720
    ishan99k
    Оценок пока нет
  • Django Multi Step Form
    Django Multi Step Form
    Документ5 страниц
    Django Multi Step Form
    Marth Summers
    Оценок пока нет
  • CRUD Operation Using Modal Dialog in MVC
    CRUD Operation Using Modal Dialog in MVC
    Документ18 страниц
    CRUD Operation Using Modal Dialog in MVC
    Rohit Kesharwani
    100% (1)
  • Django Admin Cookbook
    Django Admin Cookbook
    От Everand
    Django Admin Cookbook
    Оценок пока нет
  • jQuery 1.4 Reference Guide
    jQuery 1.4 Reference Guide
    От Everand
    jQuery 1.4 Reference Guide
    Рейтинг: 3.5 из 5 звезд
    3.5/5 (2)
  • Learn JavaScript in 24 Hours
    Learn JavaScript in 24 Hours
    От Everand
    Learn JavaScript in 24 Hours
    Рейтинг: 3 из 5 звезд
    3/5 (4)
  • Wsgi PDF
    Wsgi PDF
    Документ60 страниц
    Wsgi PDF
    Walter Angolar Da Silva
    Оценок пока нет
  • Nginx + Apache Tomcat Configuration Example
    Nginx + Apache Tomcat Configuration Example
    Документ2 страницы
    Nginx + Apache Tomcat Configuration Example
    Walter Angolar Da Silva
    Оценок пока нет
  • Tutorial PDF
    Tutorial PDF
    Документ339 страниц
    Tutorial PDF
    Bikash Ranjan Samal
    Оценок пока нет
  • What Is Nextcloud?
    What Is Nextcloud?
    Документ8 страниц
    What Is Nextcloud?
    Walter Angolar Da Silva
    Оценок пока нет
  • GitLab Docker Images
    GitLab Docker Images
    Документ8 страниц
    GitLab Docker Images
    Walter Angolar Da Silva
    Оценок пока нет
  • Install Oracle
    Install Oracle
    Документ17 страниц
    Install Oracle
    Walter Angolar Da Silva
    Оценок пока нет
  • LSD Guide To Zimbra8-5v6
    LSD Guide To Zimbra8-5v6
    Документ8 страниц
    LSD Guide To Zimbra8-5v6
    Walter Angolar Da Silva
    Оценок пока нет
  • Advanced Django2929
    Advanced Django2929
    Документ81 страница
    Advanced Django2929
    Sergio Nhemetz
    Оценок пока нет
  • Django Model Report
    Django Model Report
    Документ13 страниц
    Django Model Report
    Walter Angolar Da Silva
    Оценок пока нет
  • Pysnmp
    Pysnmp
    Документ26 страниц
    Pysnmp
    Walter Angolar Da Silva
    Оценок пока нет
  • Python Skype
    Python Skype
    Документ5 страниц
    Python Skype
    Walter Angolar Da Silva
    Оценок пока нет
  • 05 Box Shadow 101006074734 Phpapp02
    05 Box Shadow 101006074734 Phpapp02
    Документ57 страниц
    05 Box Shadow 101006074734 Phpapp02
    Walter Angolar Da Silva
    Оценок пока нет
  • Introduction To Core Java (At A Glance)
    Introduction To Core Java (At A Glance)
    Документ72 страницы
    Introduction To Core Java (At A Glance)
    Saikat Das
    Оценок пока нет
  • Log
    Log
    Документ141 страница
    Log
    Samrat Moinul
    Оценок пока нет
  • Ajava 6C 2160707 PDF
    Ajava 6C 2160707 PDF
    Документ4 страницы
    Ajava 6C 2160707 PDF
    anon4819
    Оценок пока нет
  • Planning For Red Hat Satellite
    Planning For Red Hat Satellite
    Документ47 страниц
    Planning For Red Hat Satellite
    SELIM
    Оценок пока нет
  • Threads (Chapter 4) : References
    Threads (Chapter 4) : References
    Документ29 страниц
    Threads (Chapter 4) : References
    Sudip Kumar Dey
    Оценок пока нет
  • Ieee Impact of Budget sdlc10-09
    Ieee Impact of Budget sdlc10-09
    Документ14 страниц
    Ieee Impact of Budget sdlc10-09
    Bunty Dillikar
    Оценок пока нет
  • MCA
    MCA
    Документ11 страниц
    MCA
    Alphones Damon
    Оценок пока нет
  • Lab 01 Revision of C Concepts
    Lab 01 Revision of C Concepts
    Документ6 страниц
    Lab 01 Revision of C Concepts
    Tausif Minhas
    Оценок пока нет
  • Payroll
    Payroll
    Документ16 страниц
    Payroll
    Mercy Smarty
    100% (1)
  • Madhav Resume
    Madhav Resume
    Документ7 страниц
    Madhav Resume
    ujjwal
    Оценок пока нет
  • Higher Surveying La Putt PDF Free Download Compress
    Higher Surveying La Putt PDF Free Download Compress
    Документ3 страницы
    Higher Surveying La Putt PDF Free Download Compress
    Jefferson Escobido
    0% (1)
  • 3 - Unit I - Chapter I - Understanding Java EE
    3 - Unit I - Chapter I - Understanding Java EE
    Документ15 страниц
    3 - Unit I - Chapter I - Understanding Java EE
    Vishal Chaurasiya
    Оценок пока нет
  • Installs Json
    Installs Json
    Документ29 страниц
    Installs Json
    สเก็ต ครับผม
    Оценок пока нет
  • 5-Overiview of Big Data Technologies - Hadoop
    5-Overiview of Big Data Technologies - Hadoop
    Документ36 страниц
    5-Overiview of Big Data Technologies - Hadoop
    Wong pi wen
    Оценок пока нет
  • Log
    Log
    Документ23 страницы
    Log
    Saba Amaghlobeli
    Оценок пока нет
  • Fingerprint Terminal V1.3.38 - Build210802 Release Note
    Fingerprint Terminal V1.3.38 - Build210802 Release Note
    Документ2 страницы
    Fingerprint Terminal V1.3.38 - Build210802 Release Note
    Víctor Alvarez
    Оценок пока нет
  • Oop L7
    Oop L7
    Документ15 страниц
    Oop L7
    RollingRage
    Оценок пока нет
  • SQL04
    SQL04
    Документ37 страниц
    SQL04
    haflores2512
    Оценок пока нет
  • Olly DBG 2 Help
    Olly DBG 2 Help
    Документ77 страниц
    Olly DBG 2 Help
    SrinivasXes
    Оценок пока нет
  • Node-Lock Procedures
    Node-Lock Procedures
    Документ3 страницы
    Node-Lock Procedures
    generaljomo
    Оценок пока нет
  • Lisp
    Lisp
    Документ213 страниц
    Lisp
    yatendra_dalal
    Оценок пока нет
  • Class Notes 12 Jan 2005
    Class Notes 12 Jan 2005
    Документ138 страниц
    Class Notes 12 Jan 2005
    Arslan Saeed
    Оценок пока нет
  • C Programming Session 1
    C Programming Session 1
    Документ7 страниц
    C Programming Session 1
    Kiran Kardile
    Оценок пока нет
  • Qa Training Use Case Testing
    Qa Training Use Case Testing
    Документ16 страниц
    Qa Training Use Case Testing
    Alcia Burke
    Оценок пока нет
  • Terraform Course L200 Syllabus
    Terraform Course L200 Syllabus
    Документ3 страницы
    Terraform Course L200 Syllabus
    peddareddy
    Оценок пока нет
  • Oracle Database Performance Tuning Course Content
    Oracle Database Performance Tuning Course Content
    Документ4 страницы
    Oracle Database Performance Tuning Course Content
    rajesh_pune
    Оценок пока нет
  • IT Management Suite 8
    IT Management Suite 8
    Документ9 страниц
    IT Management Suite 8
    ather
    Оценок пока нет
  • Ghost Spectre Windows 11 Superlite Version - TechLatest
    Ghost Spectre Windows 11 Superlite Version - TechLatest
    Документ13 страниц
    Ghost Spectre Windows 11 Superlite Version - TechLatest
    Goat
    Оценок пока нет
  • Transaction Codes For SAP Business Workflow
    Transaction Codes For SAP Business Workflow
    Документ8 страниц
    Transaction Codes For SAP Business Workflow
    Mangesh Khade
    Оценок пока нет
  • School of Computer Science and Engineering
    School of Computer Science and Engineering
    Документ10 страниц
    School of Computer Science and Engineering
    rahul krishna
    Оценок пока нет