Post html: Отправка данных формы | MDN

Django | Отправка форм

Последнее обновление: 20.08.2022

Одной из форм отправки данных на сервер представляет отправка с помощью форм html, обычно в запросе типа POST. В Django в целом можно использовать два подхода для работы с формами. Во-первых, можно работать со стандартными формами html. Во-вторых, Django также предоставляет специальный функционал для работы с формами, который, возможно, в каких-то моментах упрощает работу с данными. В даннной главе рассмотрим оба подхода. А в данной статье посмотрим, как получать данные обычных форм html.

Обычно данные форм передаются на сервер в запросе типа POST. Для получения подобных данных в классе HttpRequest определено свойство POST. Например, пусть у нас есть следующий шаблон index.html:


<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>METANIT.COM</title>
</head>
<body>
    <h3>User form</h3>
    <form method="post" action="postuser/">
        {% csrf_token %}
        <p>Name:<br> <input name="name" /></p>
        <p>Age:<br> <input name="age" type="number" /></p>
        <input type="submit" value="Send" />
    </form>
</body>
</html>

Здесь определена форма условно для ввода данных пользователя, которая в запросе типа POST (атрибут method=»post») отправляет данные по адресу «postuser/» (атрибут action="postuser/").

На форме определены два поля ввода. Первое поле предназначено для ввода имени пользователя. Второе поле — для ввода возроста пользователя.

Также внутри формы используется тег {% csrf_token %}. Он позволяет защитить приложение от CSRF-атак, добавляя в форму в виде скрытого поля csrf-токен. Кроме того, Django по умолчанию требует наличия данного токена в получаемых данных в запросе POST.

Для отправки формы и получения ее данных определим в файле views.py следующие функции:


from django.shortcuts import render
from django.http import HttpResponse

def index(request):
    return render(request, "index.html")

def postuser(request):
    # получаем из данных запроса POST отправленные через форму данные
    name = request.POST.get("name", "Undefined")
    age = request.POST.get("age", 1)
    return HttpResponse(f"<h3>Name: {name}  Age: {age}</h3>")

В представлении index возвращается шаблон, который содержит форму ввода.

В представлении postuser получаем через словарь request.POST отправленные из формы данные. В этом словаре по ключу можно получить значение элемента. При этом в качестве ключей выступает названия полей форм (значения атрибутов name элементов формы):

<input name="age" type="number" />

Так, в данном случае название поля (значение атрибута name) равно «age». Соответственно в request.POST по этому имени мы можем получить его значение:

age = request.POST.get("age", 1)

Если по каким-то причинам данные с ключом «age» в запросе отсутствуют, то возвращается значени по умолчанию — 1.

Далее в файле urls.py свяжем эти функции с маршрутами:


from django.urls import path
from hello import views
 
urlpatterns = [
    path("", views.index),
    path("postuser/", views.postuser),
]

И после получения данных формы они отправляются обратно клиенту:

Получение массивов

Усложним задачу и добавим в форму на странице index. html несколько полей, которые будут представлять массив:


<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>METANIT.COM</title>
</head>
<body>
    <h3>User form</h3>
    <form method="post" action="postuser/">
        {% csrf_token %}
        <p>Name:<br /> <input name="name" /></p>
        <p>Age:<br /> <input name="age" type="number" /></p>
        <p>
            Languages:<br />
            <input name="languages" /><br />
            <input name="languages" /><br />
            <input name="languages" /><br />
        </p>
        <input type="submit" value="Send" />
    </form>
</body>
</html>

Здесь практически та же форма, только добавлено три поля для ввода языка программирования.

Причем каждое из этих полей имеет одно и то же имя — «languages». Благодаря этому при отправке формы в данных запроса будет сформирован список languages из данных, введенных в эти поля.

В файле views.py изменим функцию postuser для получения массива languages:


from django.shortcuts import render
from django.http import HttpResponse

def index(request):
    return render(request, "index.html")

def postuser(request):
    # получаем из строки запроса имя пользователя
    name = request.POST.get("name", "Undefined")
    age = request.POST.get("age", 1)
    langs = request.POST.getlist("languages", ["python"])
    
    return HttpResponse(f"""
                <div>Name: {name}  Age: {age}<div>
                <div>Languages: {langs}</div>
            """)

Ключевой компонент при получении списка данных из запроса представляет метод

getlist(), который работает так же, как и get(), только возвращает список. Если в запросе не окажется данных с ключом languages, то возвращаем список ["python"]

Получив список, мы можем что-то сделать с его элементами, перебрать, обратиться к элементам по индексу и т.д. Но в данном случае просто передаем весь список в формируемый ответ.

Подобным образом можно передавать значения массива полей других типов, либо полей, которые представляют набор элементов, например, элемента select, который поддерживает множественный выбор:


<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>METANIT.COM</title>
</head>
<body>
    <h3>User form</h3>
    <form method="post" action="postuser/">
        {% csrf_token %}
        <p>Name: <br />
            <input name="name" />
        </p>
        <p>Age: <br />
            <input name="age" type="number" />
        </p>
        <p>
            Languages:<br />
            <select multiple name="languages">
                <option>Python</option>
                <option>JavaScript</option>
                <option>C++</option>
                <option>Java</option>
             </select>
        </p>
        <input type="submit" value="Send" />
    </form>
</body>
</html>

НазадСодержаниеВперед

POST-запросы и отправка форм ⚡️ Node.

js с примерами кода

При оправке каких-то сложных данных обычно используются формы. Рассмотрим, как получать отправленные данные в Express.

Для получения данных форм из запроса необходимо использовать специальный пакет body-parser. Поэтому вначале добавим его в проект с помощью команды

npm install body-parser --save

Определим в папке проекта новый файл register.html:

<!DOCTYPE html>
<html>
  <head>
    <title>Регистрация</title>
    <meta charset="utf-8" />
  </head>
  <body>
    <h2>Введите данные</h2>
    <form action="/register" method="post">
      <label>Имя</label><br />
      <input type="text" name="userName" /><br /><br />
      <label>Возраст</label><br />
      <input type="number" name="userAge" /><br /><br />
      <input type="submit" value="Отправить" />
    </form>
  </body>
</html>

Здесь определены два поля для ввода имени и возраста пользователя.

После нажатия на кнопку данные будут уходить по адресу /register.

В файле app.js определим следующий код:

const express = require('express')
const bodyParser = require('body-parser')
const app = express()
// создаем парсер для данных application/x-www-form-urlencoded
const urlencodedParser = bodyParser.urlencoded({
  extended: false,
})
app.get('/register', urlencodedParser, function (
  request,
  response
) {
  response.sendFile(__dirname + '/register.html')
})
app.post('/register', urlencodedParser, function (
  request,
  response
) {
  if (!request.body) return response.sendStatus(400)
  console.log(request.body)
  response.send(
    `${request.body.userName} - ${request.body.userAge}`
  )
})
app.get('/', function (request, response) {
  response.send('Главная страница')
})
app.listen(3000)

Прежде всего для получения отправленных данных необходимо создать парсер:

const urlencodedParser = bodyParser.urlencoded({
  extended: false,
})

Поскольку данные отправляются с помощью формы, то для создания парсера применяется функция urlencoded(). В эту функцию передается объект, устанавливающий параметры парсинга. Значение extended: false указывает, что объект — результат парсинга будет представлять набор пар ключ-значение, а каждое значение может быть представлено в виде строки или массива.

При переходе по адресу /register будет срабатывать метод app.get, который отправит пользователю файл register.html.

Так как данные отправляются с помощью метода POST, то для обработки определяем функцию app.post("/register",...). Первый параметр функции — адрес, на который идет отправка —

/register. Стоит отметить, что в данном случае с одинм адресом /register связаны две функции, только одна обрабатывает запросы get, а другая — запросы post. Второй параметр — выше созданный парсер. Третий параметр — обработчик:

app.post('/register', urlencodedParser, function (
  request,
  response
) {
  if (!request. body) return response.sendStatus(400)
  console.log(request.body)
  response.send(
    `${request.body.userName} - ${request.body.userAge}`
  )
})

Для получения самих отправленных данных используем выражения типа request.body.userName, где request.body инкапсулирует данные формы, а userName — ключ данных, который соответствует значению атрибута name поля ввода на html-странице:

<input type="text" name="userName" />

Запустим приложение и обратимся к странице register.html:

После отправки введенные данные будут получены в функции app.post("/register",...), которая выведет результат обработки:

Экспресс-маршрутизация

Маршрутизация относится к тому, как конечные точки приложения (URI) отвечают на запросы клиентов. Введение в маршрутизацию см. в разделе Базовая маршрутизация.

Вы определяете маршрутизацию с помощью методов объекта Express app , которые соответствуют методам HTTP; например, app. get() для обработки запросов GET и app.post для обработки запросов POST. Для полного списка, см. приложение.МЕТОД. Вы также можете использовать app.all() для обработки всех HTTP-методов и app.use() для указать промежуточное ПО в качестве функции обратного вызова (подробности см. в разделе Использование промежуточного ПО).

Эти методы маршрутизации определяют функцию обратного вызова (иногда называемую «функциями обработчика»), которая вызывается, когда приложение получает запрос к указанному маршруту (конечной точке) и методу HTTP. Другими словами, приложение «прослушивает» запросы, соответствующие указанному(ым) маршруту(ам) и методу(ам), и когда оно обнаруживает совпадение, оно вызывает указанную функцию обратного вызова.

На самом деле методы маршрутизации могут иметь более одной функции обратного вызова в качестве аргументов. При наличии нескольких функций обратного вызова важно обеспечить next в качестве аргумента функции обратного вызова, а затем вызовите next() в теле функции для передачи управления к следующему обратному вызову.

Следующий код является примером очень простого маршрута.

 const экспресс = требуется('экспресс')
постоянное приложение = экспресс()
// отвечаем "hello world" при GET-запросе на главную страницу
app.get('/', (требование, разрешение) => {
  res.send («привет, мир»)
})
 

Методы маршрутизации

Метод маршрута является производным от одного из методов HTTP и прикрепляется к экземпляру экспресс класс.

Следующий код является примером маршрутов, определенных для методов GET и POST к корню приложения.

 // маршрут метода GET
app.get('/', (требование, разрешение) => {
  res.send('ПОЛУЧИТЬ запрос на главную страницу')
})
// Маршрут метода POST
app.post('/', (req, res) => {
  res.send('POST-запрос на главную страницу')
})
 

Express поддерживает методы, соответствующие всем методам HTTP-запроса: get , post и так далее. Полный список см. в app.METHOD.

Существует специальный метод маршрутизации, app. all() , используемый для загрузки функций промежуточного программного обеспечения по пути для всех методов HTTP-запроса. Например, следующий обработчик выполняется для запросов к маршруту «/secret» с использованием GET, POST, PUT, DELETE или любого другого метода HTTP-запроса, поддерживаемого в модуле http.

 app.all('/secret', (req, res, next) => {
  console.log('Доступ к секретному разделу...')
  next() // передаем управление следующему обработчику
})
 

Маршрутные пути

Маршрутные пути в сочетании с методом запроса определяют конечные точки, в которых могут быть сделаны запросы. Пути маршрута могут быть строками, шаблонами строк или регулярными выражениями.

Символы ? , + , * и () являются подмножествами своих аналогов регулярных выражений. Дефис ( - ) и точка ( . ) буквально интерпретируются строковыми путями.

Если вам нужно использовать символ доллара ( $ ) в строке пути, заключите его в ([ и ]) . Например, строка пути для запросов по адресу «/data/$book » будет «/data/([\$])book ».

Express использует path-to-regexp для сопоставления путей маршрута; см. документацию path-to-regexp для всех возможностей определения путей маршрута. Express Route Tester — это удобный инструмент для тестирования основных экспресс-маршрутов, хотя он не поддерживает сопоставление с образцом.

Строки запроса не являются частью пути маршрута.

Вот несколько примеров маршрутов на основе строк.

Этот путь маршрута будет соответствовать запросам на корневой маршрут, /.

 app.get('/', (req, res) => {
  res.send('корень')
})
 

Этот путь маршрута будет соответствовать запросам на /about .

 app.get('/about', (req, res) => {
  res.send('о')
})
 

Этот путь маршрута будет соответствовать запросам /random.text .

 app.get('/random.text', (req, res) => {
  res.send('случайный. текст')
})
 

Вот несколько примеров маршрутов на основе шаблонов строк.

Этот путь маршрута будет соответствовать acd и abcd .

 app.get('/ab?cd', (req, res) => {
  res.send('ab?cd')
})
 

Путь этого маршрута будет соответствовать abcd , abbcd , abbbcd и так далее.

 app.get('/ab+cd', (req, res) => {
  res.send('ab+cd')
})
 

Этот путь маршрута будет соответствовать abcd , abxcd , abRANDOMcd , ab123cd и так далее.

 app.get('/ab*cd', (req, res) => {
  res.send('ab*cd')
})
 

Этот путь маршрута будет соответствовать /abe и /abcde .

 app.get('/ab(cd)?e', (req, res) => {
  res.send('ab(cd)?e')
})
 

Примеры путей маршрута на основе регулярных выражений:

Этот путь маршрута будет соответствовать любому объекту, в котором есть буква «а».

 app.get(/a/, (req, res) => {
  res.send('/a/')
})
 

Этот путь маршрута будет соответствовать бабочке и стрекозе , но не бабочке , стрекозе и так далее.

 app.get(/.*fly$/, (req, res) => {
  res.send('/.*fly$/')
})
 

Параметры маршрута

Параметры маршрута — это именованные сегменты URL-адресов, которые используются для захвата значений, указанных в их позиции в URL-адресе. Захваченные значения заполняются в объекте req.params с именем параметра маршрута, указанным в пути в качестве соответствующих ключей.

 Путь маршрута: /users/:userId/books/:bookId
URL запроса: http://localhost:3000/users/34/books/8989
req.params: { "userId": "34", "bookId": "8989" }
 

Чтобы определить маршруты с параметрами маршрута, просто укажите параметры маршрута в пути маршрута, как показано ниже.

 app.get('/users/:userId/books/:bookId', (req, res) => {
  res.send (треб.  параметры)
})
 

Имя параметров маршрута должно состоять из «словесных символов» ([A-Za-z0-9_]).

Начиная с дефиса ( - ) и точка ( . ) интерпретируются буквально, их можно использовать вместе с параметрами маршрута в полезных целях.

 Путь маршрута: /рейсы/:от-:до
URL запроса: http://localhost:3000/flights/LAX-SFO
req.params: { "от": "LAX", "до": "SFO" }
 
 Путь маршрута: /plantae/:род.:вид
URL запроса: http://localhost:3000/plantae/Prunus.persica
req.params: { "род": "Prunus", "вид": "persica" }
 

Чтобы иметь больший контроль над точной строкой, которая может быть сопоставлена ​​с параметром маршрута, вы можете добавить регулярное выражение в круглых скобках ( () ):

 Путь маршрута: /user/:userId(\d+)
URL запроса: http://localhost:3000/user/42
req.params: {"userId": "42"}
 

Поскольку регулярное выражение обычно является частью литеральной строки, убедитесь, что все символы \ экранированы дополнительной обратной косой чертой, например \\d+ .

В Express 4.x символ * в регулярных выражениях не интерпретируется обычным образом. В качестве обходного пути используйте {0,} вместо * 9.0008 . Вероятно, это будет исправлено в Express 5.

Обработчики маршрутов

Вы можете предоставить несколько функций обратного вызова, которые ведут себя как промежуточное ПО для обработки запроса. Единственным исключением является то, что эти обратные вызовы могут вызвать next('route') , чтобы обойти оставшиеся обратные вызовы маршрута. Вы можете использовать этот механизм, чтобы наложить предварительные условия на маршрут, а затем передать управление последующим маршрутам, если нет причин продолжать текущий маршрут.

Обработчики маршрутов могут быть в форме функции, массива функций или комбинации того и другого, как показано в следующих примерах.

Одна функция обратного вызова может обрабатывать маршрут. Например:

 app.get('/example/a', (req, res) => {
  res. send('Привет от А!')
})
 

Более одной функции обратного вызова могут обрабатывать маршрут (убедитесь, что вы указали объект next ). Например:

 app.get('/example/b', (req, res, next) => {
  console.log('ответ будет отправлен следующей функцией...')
  следующий()
}, (требование, разрешение) => {
  res.send('Привет от B!')
})
 

Массив функций обратного вызова может обрабатывать маршрут. Например:

 const cb0 = функция (запрос, разрешение, следующий) {
  console.log('CB0')
  следующий()
}
const cb1 = function (req, res, next) {
  console.log('CB1')
  следующий()
}
const cb2 = функция (req, res) {
  res.send('Привет от C!')
}
app.get('/пример/c', [cb0, cb1, cb2])
 

Комбинация независимых функций и массивов функций может обрабатывать маршрут. Например:

 const cb0 = function (req, res, next) {
  console.log('CB0')
  следующий()
}
const cb1 = function (req, res, next) {
  console.log('CB1')
  следующий()
}
app.get('/example/d', [cb0, cb1], (req, res, next) => {
  console. log('ответ будет отправлен следующей функцией...')
  следующий()
}, (требование, разрешение) => {
  res.send('Привет из D!')
})
 

Методы ответа

Методы объекта ответа ( res ) в следующей таблице могут отправить ответ клиенту и завершить цикл запрос-ответ. Если ни один из этих методов не вызывается из обработчика маршрута, клиентский запрос останется висящим.

Метод Описание
рез.загрузить() Подскажите файл для загрузки.
рез.конец() Завершить процесс ответа.
res.json() Отправить ответ в формате JSON.
res.jsonp() Отправить ответ JSON с поддержкой JSONP.
res.redirect() Перенаправить запрос.
рез.рендер() Визуализация шаблона представления.
res.send() Отправить ответ различных типов.
res.sendFile() Отправить файл как поток октетов.
res.sendStatus() Установите код состояния ответа и отправьте его строковое представление в качестве тела ответа.

app.route()

Вы можете создать цепочку обработчиков маршрутов для пути маршрута, используя app.route() . Поскольку путь указан в одном месте, создание модульных маршрутов полезно, так как это уменьшает избыточность и опечатки. Дополнительные сведения о маршрутах см. в документации Router().

Вот пример обработчиков связанных маршрутов, которые определяются с помощью app.route() .

 app.route('/книга')
  .get((требование, разрешение) => {
    res.send('Получить случайную книгу')
  })
  .post((req, res) => {
    res.send('Добавить книгу')
  })
  .put((req, res) => {
    res.send('Обновить книгу')
  })
 

express.Router

Используйте класс express. Router для создания модульных монтируемых обработчиков маршрутов. Экземпляр Router представляет собой полное промежуточное программное обеспечение и систему маршрутизации; по этой причине его часто называют «мини-приложением».

В следующем примере маршрутизатор создается как модуль, загружается в него функция промежуточного программного обеспечения, определяются некоторые маршруты и монтируется модуль маршрутизатора по пути в основном приложении.

Создайте файл маршрутизатора с именем birds.js в каталоге приложения со следующим содержимым:

 const express = require('express')
постоянный маршрутизатор = экспресс. Маршрутизатор ()
// промежуточное ПО, специфичное для этого маршрутизатора
router.use((req, res, next) => {
  console.log('Время:', Date.now())
  следующий()
})
// определяем маршрут домашней страницы
router.get('/', (req, res) => {
  res.send('Домашняя страница птиц')
})
// определяем маршрут
router.get('/about', (req, res) => {
  res. send('О птицах')
})
модуль.экспорт = маршрутизатор
 

Затем загрузите модуль маршрутизатора в приложение:

 const birds = require('./birds')
// ...
app.use('/птицы', птицы)
 

Теперь приложение сможет обрабатывать запросы к /birds и /birds/about , а также вызывать функцию промежуточного программного обеспечения timeLog , специфичную для маршрута.

Департамент производственных отношений штата Калифорния

  1. Департамент производственных отношений

В Калифорнии все работодатели должны выполнять обязательства по размещению на рабочем месте. Публикации на рабочем месте обычно доступны бесплатно от запрашивающего агентства. Департамент Промышленности Отношения требуют от работодателей публиковать информацию, касающуюся заработной платы, часов и рабочего времени. условия в районе, часто посещаемом сотрудниками, где его можно легко прочитать во время рабочий день. Дополнительные требования к размещению применяются к некоторым рабочим местам. Для списка доступные сообщения о безопасности и здоровье посетите страницу публикаций Cal/OSHA.

Для получения дополнительной информации см. ответы на часто задаваемые вопросы о публикациях на рабочем месте.

Загруженные плакаты соответствуют юридическим обязательствам работодателя.



Размещение

Дополнительная информация

Кто должен публиковать

Уведомление о проверке иммиграционными агентствами

Также доступно на: Испанский
В соответствии с разделом 90.2(a) Трудового кодекса работодатели обязаны уведомлять сотрудников о любой проверке иммиграционным агентством форм I-9, подтверждающих право на трудоустройство, или других трудовых книжек, размещая уведомление в течение 72 часов с момента получения уведомления о осмотр. См. также AB 450, который запрещает несправедливую иммиграционную практику в отношении лица, осуществляющего определенные права. Ресурсы для сотрудников иммиграционных служб можно найти здесь.
Распоряжения Комиссии по социальному обеспечению промышленности (IWC) о заработной плате Приказы о заработной плате IWC регулируют заработную плату, часы и условия труда и нумеруются по отраслям или профессиональным группам. Не знаете, какой заказ вам нужен? Используйте алфавитный указатель предприятий и профессий, чтобы сделать это определение.

Трудовой кодекс, раздел 1183(d)

Все работодатели
Минимальная заработная плата (гос.) Устанавливает минимальную заработную плату в Калифорнии. Также доступно на: Испанский Все работодатели
Оплачиваемый отпуск по болезни Предоставляет информацию о праве на оплачиваемый отпуск по болезни и его использовании.

Счет за сборку 1522

 
Уведомление о зарплате Необходимо указать регулярные дни выплаты, а также время и место выплаты. Разрешено уведомление, разработанное работодателем.

Трудовой кодекс раздел 207

Все работодатели
Безопасность и охрана здоровья на рабочем месте Содержит соответствующую информацию о правилах и нормах безопасности. Также доступно на: Испанский

Трудовой кодекс статья 6328; Дата печати плаката: октябрь 2017 г.

Все работодатели
Телефоны экстренных служб Список телефонов экстренных служб.

Раздел 8, Свод правил штата Калифорния, Приказы о безопасности строительства, раздел 1512 (e)

Все работодатели
Доступ к медицинским записям и записям о риске заражения Предоставляет информацию о правах работников, работающих с опасными/токсичными веществами. Также доступно на: Испанский

Раздел 8, Свод правил штата Калифорния, Общий приказ по промышленной безопасности, раздел 3204

Все работодатели, использующие опасные или токсичные вещества
Правила эксплуатации промышленных грузовиков Работодатели, использующие промышленные грузовики, должны опубликовать и обеспечить соблюдение свода правил эксплуатации. Также доступно на: Испанский

Раздел 8, Свод правил штата Калифорния, Общий приказ по промышленной безопасности, раздел 3664; Дата печати постера: август 2011 г.

Работодатели, эксплуатирующие вилочные погрузчики и другие типы промышленных грузовиков или тягачей
Уведомление для работников -- производственный травматизм Консультирует сотрудников по поводу компенсационных выплат. Администраторы требований и работодатели должны пересмотреть уведомление, которое они используют в настоящее время, и отправить его административному директору DWC для проверки и утверждения, или же они могут загрузить и использовать эту версию. ПРИМЕЧАНИЕ. Работодатели могут получить профессионально отпечатанные копии плаката и формы заявления о возмещении убытков от своего администратора требований.

Раздел 8, Свод правил штата Калифорния, Отдел компенсации работникам, раздел 9881

Все работодатели
Уведомление о перевозчике компенсации работникам и покрытии Указывает название текущей страховой компании работодателя или тот факт, что работодатель застрахован самостоятельно. Получено от страховой компании по страхованию компенсаций работникам работодателя.

ТК 3550 9 ст.0005

Все работодатели
Защита осведомителей Должен быть размещен на видном месте шрифтом размером больше 14 и включать список прав и обязанностей сотрудников в соответствии с законы о разоблачениях, в том числе номер телефона горячей линии для разоблачителей, поддерживаемой офисом Генеральный прокурор Калифорнии. Отдел по обеспечению соблюдения трудовых норм подготовил образец объявления, который, по его мнению, соответствует требованиям Трудовой кодекс, раздел 1102.8(а), за исключением того, что он больше размера 14. Чтобы просмотреть этот образец, нажмите здесь (Pdf) (Док). Однако этот образец — не единственный вариант, поскольку работодатели могут создавать свои собственные публикации.

Трудовой кодекс статья 1102.8

Все работодатели
Табличка "Не курить" Должны быть вывешены вывески, обозначающие, где запрещено/разрешено курение на рабочем месте. За соблюдением этого закона следят местные правоохранительные органы.

Трудовой кодекс, раздел 6404.5(c)(1)

Все работодатели
Журнал учета и справки о производственных травмах и заболеваниях Форма 300 предназначена для регистрации регистрируемых травм, форма 301 предназначена для сбора сведений, а форма 300A представляет собой ежегодную сводную форму. Все три формы доступны в различные загружаемые форматы с инструкциями на странице публикаций Cal/OSHA.

Раздел 8, Свод правил Калифорнии, Отдел статистики труда и исследований, разделы 14300 и последующие.

Работодатели с 11 и более работниками в предыдущем году
Справка о ставках заработной платы подрядчика на сельскохозяйственных работах Справочный плакат DLSE 445. Должен быть размещен на видном месте в местах выполнения работ и на всех транспортных средствах, используемых лицензиатом для перевозки сотрудников. Должна быть не менее 12 дюймов в высоту и 10 дюймов в ширину.
Загруженная версия этой публикации может не соответствовать закону, поскольку ее высота может быть меньше 12 дюймов, а ширина — 10 дюймов.

Трудовой кодекс, раздел 1695(7)

Сельскохозяйственные подрядчики с лицензией Отдела по обеспечению соблюдения трудовых норм (DLSE)
Обязательное размещение на рабочем месте для всех калифорнийских лицензиатов парикмахерской и косметологии Также доступно в: испанский вьетнамский Корейский

Трудовой кодекс, раздел 98. 10

Все лицензированные парикмахеры и косметологи
Действующие определения ставок заработной платы Орган, заключающий какой-либо контракт на общественные работы или иным образом выполняющий какие-либо общественные работы, должен предоставить копию преобладающее определение заработной платы для каждого ремесла, категории или типа работника, необходимого для выполнения контракта, который должен быть размещены на каждом сайте вакансий.

Трудовой кодекс раздел 1773.2

Органы и подрядчики, выдающие подряды на общественные работы

Помимо должностей, требуемых Департаментом производственных отношений, другие государственные и федеральные агентства имеют обязательства по размещению. Дополнительные требования включают (этот список не является исчерпывающим):

Размещение

Дополнительная информация

Кто должен публиковать

Законодательство Калифорнии запрещает дискриминацию и домогательства на рабочем месте Актуальную информацию можно получить в Департаменте справедливого трудоустройства и жилищного строительства (DFEH),
1 (800) 884-1684, Справочное уведомление DFEH-E07P-ENG.

Закон о справедливой занятости и жилье, раздел 12900 Правительственного кодекса и след.

Все работодатели
Права трансгендеров на рабочем месте (обязательно с 1 января 2018 г.) Актуальную информацию можно получить в Департаменте справедливого трудоустройства и жилищного строительства (DFEH),
1 (800) 884-1684, Справочное уведомление DFEH-E04P-ENG. Также доступен в:
Испанский Derechos de las personas transgénero en el lugar de trabajo

Закон о справедливой занятости и жилье, статья 129 Правительственного кодекса.35(а), 12920, 12921, 12926, 12940, 12943 и 12945.

Все работодатели
Отпуск по беременности и родам Актуальную информацию можно получить в Департаменте справедливого трудоустройства и жилищного строительства (DFEH),
1 (800) 884-1684, Справочное уведомление DFEH-E09P-ENG.

Раздел 2, Свод правил Калифорнии, раздел 7291.16(d)

Работодатели с числом работников от 5 до 49
Отпуск по уходу за семьей и по состоянию здоровья (отпуск CFRA) и отпуск по инвалидности по беременности Актуальную информацию можно получить в Департаменте справедливого трудоустройства и жилищного строительства (DFEH),
1 (800) 884-1684, Справочное уведомление DFEH-100-21ENG.

Раздел 2, Свод правил Калифорнии, разделы 7297.9 и 7291.16(e)

Все работодатели с 50 и более сотрудниками и все государственные учреждения
Уведомление для сотрудников Консультирует сотрудников по страхованию потенциальной безработицы, страхованию по инвалидности и страховым пособиям по оплачиваемому отпуску по семейным обстоятельствам. Актуальную информацию можно получить в Департамент развития занятости, регистрационный номер DE 1857A.
(916) 322-2835. Также доступно в: испанский вьетнамский Китайский
Все работодатели
Уведомление для работников: пособия по безработице Актуальную информацию можно получить в Департаменте развития занятости, номер ссылки DE 1857D.
(916) 322-2835. Также доступно в: испанский вьетнамский Китайский
Все работодатели
Уведомление для сотрудников: свободное время для голосования Не менее чем за 10 дней до каждых выборов в штате каждый работодатель должен размещать объявления на видном месте по месту работы, если это возможно, или в другом месте, где видно, как работники приходят или уходят на свое рабочее место, уведомление, излагающее положения раздел 14000.

Кодекс о выборах, раздел 14001 и последующие.

Все работодатели
Равные возможности трудоустройства – закон Включает плакат Закона об американцах-инвалидах (ADA). Актуальную информацию можно получить в Комиссия США по равным возможностям трудоустройства.
1 (800) 669-3362
Все работодатели
Минимальная заработная плата (Федеральный закон о справедливых трудовых стандартах) Актуальную информацию можно получить в Министерстве труда США, каталожный номер WH 1088.
(415) 744-5590 Также доступно в: испанский Китайский
Все работодатели
Уведомление: Закон о защите сотрудников с помощью детектора лжи Последнюю информацию можно получить в Министерстве труда США, номер ссылки WH 1462.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *